10 2024 档案
摘要:Changes in Antwanland 我们可以考虑直接枚举根,我们假设从根出发的深度为 \(i\) 的结点数量为 \(cnt_i\) ,那么我们只需要找到第一个 \(cnt_1 + cnt_2 + ... + cnt_x \geq k\) 即可,但是一个点的中心有可能可以在边上,所以跑两边即可
阅读全文
摘要:Dihedral Group 猜结论,我们观察样例就可以猜到,只要 \(t\) 可以被 \(d\) 在一个圆上正着或泛着表示即可 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 5e4
阅读全文
摘要:Jordan's Castles 我们先思考如何快速求出 \(b_1, b_2, b_3...b_n\) 显然我们可以直接用二分找到,然后我们可以直接将 \(a_i\) 改为 \(min(a[i], b[i])\),然后统计答案即可 #include <bits/stdc++.h> using na
阅读全文
摘要:P1040 启发式图染色问题(color) 我们可以先想一棵树的情况,如下图所示 但是显然这个节点数量是 \(2 ^ k\),我们可以考虑二分图,然后你推着推着就会发现一个建图方案 具体来说,我们可以现在左边创建一个颜色为 \(1\) 的结点,然后我们想让颜色数量尽量多,我们直接在右边创建一个颜色为
阅读全文
摘要:袜子分配(socks) 我们可以考虑一下我们是怎么暴搜的,我们搜出一个 \(2 \times n\) 长度的序列,然后枚举每相邻两个数字,判断是不是合法的,那么也就是说,一个数字想合法,他必须精准的落在这个序列中的一个位置,那么概率是 \(2 \times n - 1\) ,有 \(n\) 对数字,
阅读全文
摘要:P1037 易形迷宫(maze) 我们可以转化一下题面,把胸口碎大石的功能换成幽灵,可以直接穿透石头,那么我们可以把炸碎石头改成可以向 \(8\) 个方向随便走 \(k - 1\) 步,然后我们直接 \(dij\) 即可 #include <bits/stdc++.h> using namespac
阅读全文
摘要:子集和问题(subset) 由于是子序列,所以选的顺序没有要求,那么我们可以从大到小排序,然后设 \(dp_{i, j}\) 表示选前 \(i\) 个中的数字,和为 \(j\),然后每次统计时直接乘上组合数即可 #include <bits/stdc++.h> using namespace std
阅读全文
摘要:Game 我们可以发现,谁先删掉倒数第二个数,谁必输,那么我们可以考虑会做 \(2\) 操作多少次,不难发现,一定是 \(a_{n - 1}\) 次,所以判奇偶即可 Iwanna 人类智慧,先观察样例,发现虽然是期望,但是似乎都是整数,所以我们可以根据样例猜一个结论,答案就是从 \(s\) 出发的不
阅读全文
摘要:庸医(doctor) 我们注意到 \(\sum k_i\) 小于等于 \(1e6\),那么我们可以发现我们假如把每一个药的日期都表示成一个区间,那么区间数也小于等于 \(1e6\) 拓扑序计数(topo) 我们可以不要一个一个的加入元素,我们直接记录是那种球,有多少个,至于 \(put\)操作你假如
阅读全文
摘要:三元组计数(tuple) 我们可以考虑暴力枚举 \(a, b\),由于 \(b\) 是 \(a\) 的倍数,所以我们可以使用调合集数的方法枚举,那么知道了 \(a, b\),\(c\) 的取值个数自然就是 \(w \div b - 1\) K 匹配(matches) 我们可以发现,对于一个 \(i\
阅读全文
摘要:表格游戏 我们看到这么小的数据范围,可以想到暴搜,但是时间复杂度来到了 \(2^{30}\) ,考虑折半搜索,那么其实看起来是 \(2^{22} \times 15\) 的,但是实际测评中跑不满,所以可以 \(AC\) Adjust The Presentation (Easy Version) 根
阅读全文
摘要:短路 显然可以得出一个结论,一个数字大的点肯定要到一个数字比他小的点,这个我们可以用单调栈维护出来比一个点小的第一个点,然后 \(dp\) 即可 #include <bits/stdc++.h> using namespace std; #define int long long const int
阅读全文
摘要:sequence 我们会发现,我们每次删的一定是长度最短的那个,所以我们可以最开始按照长的排一下序,然后用线段树维护每一个区间中还有几个数,每次加上答案后在两个端点打上标记即可 #include <bits/stdc++.h> #define _1 (__int128)1 using namespa
阅读全文
摘要:Back to School '24 P1 - Kicking 按照题意模拟即可 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e5 + 5; int n, m, k; char
阅读全文
摘要:Bouquet 我们可以设计一个状态 \(dp_i\) 表示前 \(i\) 朵花内最多可以选多少朵花,如果第 \(j\) 朵花和第 \(i\) 多花不冲突,要满足以下条件 \[r_j < i 且 l_i > i \]那么我们可以在 \(r_j\) 时再让 \(j\) 的转移合法,那么只用 \(1 \
阅读全文
摘要:[牛半仙的妹子 Tree(tree)](http://ac.robo-maker.cn/d/contest/p/ZY1044?tid=66f28cd11bca2159e88c8fb0) 我们会发现其实牛半仙发癫时就等于将以前的标记清空,从头开始,所以我们可以考虑根号分治,如果两个牛半仙发癫的时间间隔
阅读全文
摘要:机械指令(instruction) 我们可以考虑前缀和,那么如果我们要查询只做 \([l, r]\) 区间内的操作,那么结束时的坐标就是 \([sumx_{r} - sumx_{l - 1}, sumy_{r} - sumy_{l - 1}]\),所以我们开一个桶,来统计之前第一个\(l\) 在哪
阅读全文
摘要:公交车(bus) 显然的题目,答案就是所有连通块的大小减一之和 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e7 + 5; int n, m, fa[N], sz[N], ans
阅读全文
摘要:桌游制造 我们可以对于每种图案记录拥有这种图案的有那些圆片,然后我们枚举每一个圆片,枚举这个圆片上面的图案,枚举拥有这种图案的圆片还有哪些,然后分别打上标记,如果有一个圆片明明已经有标记了,然而又要被打一次标记,那么我们可以直接输出 \(NO\) 如果标记都已经打完了,可还是有节点没被打到也是 \(
阅读全文
摘要:缩进优化 我们可以枚举 \(i\) 的所有倍数,我们让每一块中的数除以 \(i\) 相等,显然这是调和集数 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e7 + 5, INF =
阅读全文
摘要:跳蚤os 我们可以考虑使用线段树 #include <bits/stdc++.h> using namespace std; const int N = 1e6 + 5; struct node { int son[27]; } trie[500005]; struct F { int x; str
阅读全文
摘要:Try and Cry 我们肯定是尽可能的让前 \((n - 1)\) 个多拿,但是有可能这个有一些一样的,所以向上取整即可 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e6 +
阅读全文
摘要:bwtree 我们可以设 \(dp_{i, 0/1}\) 表示当前考虑至哪个点,这个节点的子树内选了几个叶子节点 #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5, INF = 1e9; int n, a[N],
阅读全文
摘要:Card Scoring 这题当 \(k = 3\) 时还无法解决,但是 \(k = 2\) 与 \(k = 4\),\(k = 2\)时可以直接用前缀和和 \(dp\) 解决,而 \(k = 4\) 时可以用李超线段树 Marshmallow Molecules 这题直接启发式合并 #includ
阅读全文
摘要:contain 我们可以发现,本质上其实就是选一个数,将其的 \(1\) 不断变为 \(0\) 是否能凑出 \(x\),那么我们可以考虑设 \(dp_i\) 表示 \(i\) 是否被 "包含",那么我们可以考虑转移 \(dp_i \rightarrow dp_{i \oplus {(1 << j)}
阅读全文
摘要:牛牛的凑数游戏 我们可以手推一下样例,我们会发现,如果当前第 \(j\) 个数不满足 \(sum_{j - 1} + 1 >= a_j\)那么这个数就不可以从 \(0\) 表示到 \(a_j\) 中的所有数字(假设排序过了),那么我们每次可以加入的数就是一个区间,那么我们能选的数就是一个区间,我们会
阅读全文
摘要:mount 我们会惊奇的发现,无论网格在哪里,只要有山覆盖了,那么这里的贡献一定是 \(\sqrt{2}\),如下的图可以证明: 那么我们就只用开一个线段树,维护的是最小值和最小值的出现次数,如果最小值不为 \(0\),那么这部风就没有贡献,反之贡献就要加上最小值的出现次数 细节 由于我们可以直接把
阅读全文

浙公网安备 33010602011771号