P9941: 偶数多则用偶数和奇数相加变奇数,奇数多则奇数加奇数变偶数,贪心。
P11226: 使用 Trie 树根据字母大小关系建有向边,不是 DAG 输出无解,否则跑一遍拓扑排序。
P3369: 平衡树模板,我用的 FHQ Treap。
P3391: 文艺平衡树模板,我用的 FHQ Treap。
P2161: set 按区间右端点排序,A 操作直接用 set 找,B 操作为 set 元素个数。
P3835: 我用的 FHQ Treap,在普通模板上加一个 root 数组记录每个历史版本的根。
P1922: 简单树形 DP。
P1489: \(dp_{i, j}\) 表示 \(i\) 个人 \(j\) 血是否可行,直接背包,然后选出最好的血量。
P7764: 直接莫队。
P9825: 偶数个数 \(x = \frac{n}{3}\),奇数乘偶数贡献 \(x\times (n - x)\),偶数乘偶数贡献 \(\frac{x \times (x - 1)}{2}\)。
P3398: \(dist(a, b) + dist(c, d) \ge dist(a, c) + dist(b, d)\) 则两条路径相交。
P1362: 由于进位会对数位和产生影响,所以判断所有可能不产生进位的数即可。
P1475: 直接 DFS。
P1467: 直接往后判断是否是循环数即可。
P2401: \(dp_{i, j}\) 表示 \(i\) 个数 \(j\) 个小于号的方案数,分成插入到最左边,插入到最右边,插入到 >
右边,插入到 <
右边,这几种情况转移。
P7243: BFS,每次往四个方向扩展。
P1472: \(dp_{i, j}\) 表示 \(i\) 层,\(\le j\) 个节点的方案数,\(dp_{i, j} += dp_{k, j - 1} \times dp_{i - k - 1, j - 1}\)。
P10797: \(y = x\) 答案最优,为 \(2 ^ n\times x\),再特判几种情况。
P5755: 字典树板子,想不到以前 NOI 这么水。
P1733: 交互板子&二分板子。
P5514: 由于 \(a\oplus b\le a + b\),直接全部异或。
P2842: 直接背包就行了。
P1920: 这个算式越往后值越小,给 \(n\) 取一个上界即可。
P1666: \(dp_i\) 表示前 \(i\) 字符串包含 \(i\) 的安全子集数量,容易转移,\(ans = \sum dp_i\)。
P10416: 最终答案为 \(\frac{(r - 2l + 1)\times (r - 2l + 2)}{2}\),特判 \(r < 2l\)。
P1529: 把字符转成数字然后 Floyd。
P2002: 直接 Tarjan 缩点。
P2746: 依旧直接 Tarjan。
P2723: 枚举质数和丑数,找出大于第 \(i - 1\) 个丑数的丑数中的最小值。
P1530: 直接模拟即可。
P2812: 虽然是加强版,但用 P2746 的代码可以直接过。
P1383: 这题根本不用数据结构,分成是否撤销 Undo 操作即可,代码不难。
P1522: 先求出最短路和直径,然后枚举不在同一牧区的牧场,考虑连边并计算新牧区的直径,在这些里面取最小值,
P2724: 找出所有子串,然后按出现次数和长度排序,不过输出非常毒瘤。
P2729: 直接枚举。
P2730: 直接 BFS,建议把魔板看成一个一维的。
P2835: 依旧直接 Tarjan。
P2860: 先大力 Tarjan,答案为缩点后的图中的度为 \(1\) 的点的数量 \(\div 2\) 向下取整。
P3225: 先大力 Tarjan,如果当前连通块中割点数为 \(0\),则要建立两个出口,如果为 \(1\),在非割点的点建立一个出口,如果 \(\ge 2\) 则不用建立。
P3906: 先 Floyd,询问时答案为所有满足 \(dist_{u, v} = dist_{u, k} + dist_{k, v}\) 的点。
P2388: 为含 \(5\) 的个数,由于是阶乘,计数器不要清空。
P1900: 在暴力基础上用 bitset 优化。
P9752: 五维 DP 计数。
P2169: 先缩点,然后拓扑。
P7286: 排序,再维护前缀最大值计算。