首页 > TAG信息列表 > SDOI

[SDOI / SXOI2022] 多边形 解析

题目大意 给定一个不严格凸的多边形, 求其三角剖分的数量, 其中切出的三角形面积不能为 \(0\), 同时也不要求完全切完. 解法概要 容斥原理其实就是凑某个权函数, 我们直接思考这里的权是怎么凑的. 对于任意连续的 \(k\) 条边, 我们假设有 \([x^k]F(x)\) 这么多种方案将 \(k\) 条边

SDOI2022

P8349 [SDOI/SXOI2022] 整数序列 似乎还比较明显的根号分治? 复杂度 \(O(n\sqrt n \log n)\) 事实上这个复杂度一开始算出来的时候感觉不太行,然后发现开了 7s ,感觉又行了

题解-SDOI/SXOI2022 子串统计

题出的好!难度不适中,覆盖知识点广,题目又着切合实际的背景,解法比较自然。 给出题人点赞 ! 感觉做这题做得挺开心的。 题意 给定长度为 \(n\) 的字符串 \(s\)。你有一个字符串 \(t = s\),你每次操作可以在前面或在后面删除一个字符,直到字符串中只有一个字符。设每次操作后得到的字符串

P8353 [SDOI/SXOI2022] 无处存储

P8353 [SDOI/SXOI2022] 无处存储 树路径加值路径求和,强制在线。 \(n \leq 7\times 10^6\),\(q \leq 5\times 10^4\),时限 \(5\text{s}\),空限 \(64\text{MB}\)。 sol 看空间限制,\(\mathcal O(n)\) 大小的数组最多只能开两个。 首先排除线段树做法,树状数组做法三个 \(\mathcal O(n)\),

题解-[SDOI/SXOI2022]整数序列

数据范围很诈骗,但poly log做法思考无果还是指引我们来想sqrt做法。 首先有一个很暴力的 \(O(cnt_x+cnt_y)\) 的做法。看到和出现次数有关则可以想根号分治。我们设定一个阈值 \(B\),对于两者都 \(<B\) 的部分可以暴力做,都大于 \(B\) 的部分也可以暴力做,因为这样的最多只会有 \(N^2/

SDOI一轮省集部分题目题解

正在补题中…… Day1 T1 数排列 原题 考虑发掘序列 \(x\) 的性质,不难发现这个序列生成方式是现在 \([1,n-m]\) 中选一个最小值 \(x_1\),然后在 \([x_1+1,n-m+1]\) 中选一个最小值 \(x_2\),依次类推得到一个序列。 我们发现对于 \(x_{i-1}\) 和 \(x_i\),他们只有 \(n-m+1\) 位置上的选

[ SDOI 2016 ] 模式字符串

题目 Luogu LOJ Acwing 思路 代码 #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> using namespace std; typedef unsigned long long ULL; const int N = 1000010, P = 31; int T, n, m, pre[N], suf[N]; char w[N], tm

[ SDOI 2016 ] 墙上的句子

题目 Luogu LOJ Acwing 思路 代码 #include <iostream> #include <cstring> #include <algorithm> #include <map> #include <set> using namespace std; const int N = 1010, M = N * N, INF = 1e9; int Cases, n, m, S, T, col[N], row[N], cnt;

[ SDOI 2016 ] 储能表

题目 Luogu LOJ Acwing 思路 代码 #include <iostream> #include <cstring> #include <algorithm> #define int long long using namespace std; const int N = 65; int f[N][2][2][2], g[N][2][2][2], T; signed main() { cin >> T; for (int n,

SDOI 选做

[SDOI2017]树点涂色 我们用一个 \(Splay\) 来维护一种颜色,那么第一个操作实际上是 \(access\) 操作。那么每个点的权值就是从他到根节点,经过虚边的数量。 考虑操作 \(2\),由于我们已经用 \(Splay\) 表示了每一种颜色,所以我们不能再次使用 \(access\) 操作,所以我们要用另一种方式,发

SDOI 2009 Bill的挑战 【动态规划】

看数据范围发现n异常的小,于是想到装压 map[i][j]表示第i个字符填j时与那些匹配串符合 dp[i][j] 表示第i个字符,匹配的情况为j,有多少方案 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define gi get_int() const int MAXN = 60, LIM = 1 << 16

[ SDOI 2017 ] 新生舞会

题目 Luogu LOJ Acwing 思路 代码 #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; const int N = 410, M = 500010; const double eps = 1e-7; int n, m, S, T, b[N][N], a[N][N]; // 前向星 int h[

[ SDOI 2017 ] 硬币游戏

题目 Luogu LOJ Acwing 思路 代码 #include <iostream> #include <cstdio> #include <cmath> #define double long double using namespace std; typedef unsigned long long ULL; const int N = 310, P = 13331; ULL p[N] = { 1 }, h[N][N]; int n, m;

[ SDOI 2017 ] 序列计数

题目 Luogu LOJ 思路 代码 #include <iostream> #include <cstring> using namespace std; const int N = 110, M = 2e7 + 10, mod = 20170408; int n, m, p, P[M], V[M], idx, cnt[N]; struct MATRIX { int a[N][N]; }; MATRIX operator*(MATRIX A, MATRIX B) {

[SDOI 2015] 约数个数和

\(\text{Description}\) 传送门 \(\text{Solution}\) 首先有: \[\sigma(x\times y)=\sum_{i|x}\sum_{j|y} [\gcd(i,j)=1] \]具体证明戳这。 柿子变成了: \[\sum_{i=1}^n\sum_{j=1}^m\sum_{x|i}\sum_{y|j} [\gcd(x,y)=1] \]而常见形式是: \[\sum_{i=1}^n\sum_{j=1}^m [\gcd(i,j

[BZOJ 3123] [SDOI 2013]森林(可持久化线段树+启发式合并)

[BZOJ 3123] [SDOI 2013]森林(可持久化线段树+启发式合并) 题面 给出一个n个节点m条边的森林,每个节点都有一个权值。有两种操作: Q x y k查询点x到点y路径上所有的权值中,第k小的权值是多少。此操作保证点x和点y连通,同时这两个节点的路径上至少有k个点。 L x y在点x和点y之间连接

SDOI 2019 R2 摸鱼记

其实并没有什么动力来写这篇游记,毕竟呢,明明已经做好了被吊打的心理准备,可是当 Day 2 挂到没分时,当看到自己在高一里还排名二十时,还是有些,有些难言的滋味。学长们该走的真的都走了,就要只剩下 zbq 大爷一个人了。再过一两个月,60 级也就成为历史,留在 gryz 的 oi 历程上了。剩下的是仍

退役之战- SDOI

嘻嘻, 从文化课中逃脱出来, 很痛苦啊, 英语已经近半年没学了,语文水平水的一批,在其他班里受虐待。 百废待兴。 因为曾经学了一段时间的省选,所以被老师拉回来送人头考试啦。 听说4.5 SDOI一轮哎, 什么都不会,最近就是推推莫比乌斯反演(我也就这玩意念念不忘了) 反正就上星期六,星期天和下一周

[BZOJ 2285] [SDOI 2011] 保密

Description 传送门 Solution 这道题的最大难点在于读懂题意(雾 分数规划求出 \(n\) 到 \(1\cdots n_1\) 每个点的最小 \(\sum\frac{t_i}{s_i}\),然后转换成最小点权覆盖问题,最小点权覆盖 = 最大匹配数。 Code #include <queue> #include <cstdio> #include <cstring> #include <algo

解题:SDOI 2011 消耗战

题面 本身求答案是简单的树上DP,只需要求出根到每个点路径上的最小值,然后考虑割连父亲的边还是割所有儿子即可,但是每次都这样做一次显然不能通过,考虑优化 用虚树来优化:虚树是针对树上一些点建出来的一棵树,上面只有这些点和它们的LCA。显然这样虚树的大小不会超过2*所选点数,这样在缩

「BZOJ 3123」「SDOI 2013」森林「启发式合并」

题意 你有一个森林,你需要支持两个操作 查询两个结点路径上权值第\(k\)小 两个点之间连一条边 强制在线,结点数\(\leq 8\times 10^4\) 题解 如果可以离线,这就是一个主席树板子题,每个点开一个主席树表示树上的前缀和。询问的时候拿出来\(4\)棵主席树,\(x,y,lca(x,y)\)和\(fa(lca(x,y)

[SDOI 2016] 数字配对

[题目链接]          https://www.lydsy.com/JudgeOnline/problem.php?id=4514 [算法]          记Cnti表示第i个数的质因子次数之和          那么i与j可以配对当且仅当 : Cnti = Cntj + 1且ai为aj的倍数或Cntj = Cnti + 1且aj为ai的倍数          那么Cnti为