摘要: 缩进优化 我们可以枚举 \(i\) 的所有倍数,我们让每一块中的数除以 \(i\) 相等,显然这是调和集数 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e7 + 5, INF = 阅读全文
posted @ 2024-10-03 20:31 libohan0518 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 跳蚤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 阅读全文
posted @ 2024-10-03 00:11 libohan0518 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Try and Cry 我们肯定是尽可能的让前 \((n - 1)\) 个多拿,但是有可能这个有一些一样的,所以向上取整即可 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e6 + 阅读全文
posted @ 2024-10-02 21:07 libohan0518 阅读(1) 评论(0) 推荐(0) 编辑
摘要: bwtree 我们可以设 \(dp_{i, 0/1}\) 表示当前考虑至哪个点,这个节点的子树内选了几个叶子节点 #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5, INF = 1e9; int n, a[N], 阅读全文
posted @ 2024-10-02 19:51 libohan0518 阅读(3) 评论(2) 推荐(0) 编辑
摘要: Card Scoring 这题当 \(k = 3\) 时还无法解决,但是 \(k = 2\) 与 \(k = 4\),\(k = 2\)时可以直接用前缀和和 \(dp\) 解决,而 \(k = 4\) 时可以用李超线段树 Marshmallow Molecules 这题直接启发式合并 #includ 阅读全文
posted @ 2024-10-01 23:53 libohan0518 阅读(1) 评论(0) 推荐(0) 编辑
摘要: contain 我们可以发现,本质上其实就是选一个数,将其的 \(1\) 不断变为 \(0\) 是否能凑出 \(x\),那么我们可以考虑设 \(dp_i\) 表示 \(i\) 是否被 "包含",那么我们可以考虑转移 \(dp_i \rightarrow dp_{i \oplus {(1 << j)} 阅读全文
posted @ 2024-10-01 11:52 libohan0518 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 牛牛的凑数游戏 我们可以手推一下样例,我们会发现,如果当前第 \(j\) 个数不满足 \(sum_{j - 1} + 1 >= a_j\)那么这个数就不可以从 \(0\) 表示到 \(a_j\) 中的所有数字(假设排序过了),那么我们每次可以加入的数就是一个区间,那么我们能选的数就是一个区间,我们会 阅读全文
posted @ 2024-10-01 09:40 libohan0518 阅读(2) 评论(0) 推荐(0) 编辑
摘要: mount 我们会惊奇的发现,无论网格在哪里,只要有山覆盖了,那么这里的贡献一定是 \(\sqrt{2}\),如下的图可以证明: 那么我们就只用开一个线段树,维护的是最小值和最小值的出现次数,如果最小值不为 \(0\),那么这部风就没有贡献,反之贡献就要加上最小值的出现次数 细节 由于我们可以直接把 阅读全文
posted @ 2024-10-01 09:25 libohan0518 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Mr. Wow and Lucky Array 我们可以打一个表找规律,我们会发现,最大的合法的就是 \(0, 1, 0, 1......\),那么假如这个重合了,我们可以把 \(2, 3\) 调换一下顺序即可 #include <bits/stdc++.h> using namespace std 阅读全文
posted @ 2024-09-30 23:59 libohan0518 阅读(1) 评论(0) 推荐(0) 编辑
摘要: The Only Way to the Destination 首先假如两个墙之间的间隔大于等于二了,那么就直接输出 \(no\),如果能在图的空隙中找到一个 \(2 * 2\) 的矩形,那么也是输出 \(no\),然后我们可以把每一列看成一个点,再把每个空隙看成一条边即可,用并查集维护 A Sim 阅读全文
posted @ 2024-09-30 20:53 libohan0518 阅读(5) 评论(0) 推荐(0) 编辑