摘要: ABC212F 暴力就是直接跳,显然不可过。 考虑对暴力进行优化,发现整个图是不会改变的,容易想到使用倍增。 显然是对边进行倍增的,令 \(f_{i, j}\) 表示从第 \(i\) 条边开始,跳了 \(2^j\) 条边后,到的是哪一条边,如果不存在,则设为 \(-1\)。 然后就是很显然的倍增了, 阅读全文
posted @ 2023-10-07 13:32 Pengzt 阅读(7) 评论(0) 推荐(0) 编辑
摘要: ARC106F 模拟赛题。 Prufer 序列做法需要较强的组合数学功底,所以这里讲解另一种方法。 由于除根节点外每个点只有一个父亲节点,考虑从这里入手。 给每个点指定一个特殊点,让这个特殊点连向它的父亲节点的非特殊点。此时只有根节点没有特殊点,可随便指定一个特殊点,因为是无根树,且根节点最后是会与 阅读全文
posted @ 2023-10-07 13:31 Pengzt 阅读(4) 评论(0) 推荐(0) 编辑
摘要: P8201 简单题。 题中求的是 \(dis_{a, t} \oplus dis_{t, b} = k\) 是否存在,显然不好直接维护,考虑转化。 令 \(dist = dis_{a, t} \oplus dis_{t, b}\),\(val = \bigoplus\limits_{x\in \te 阅读全文
posted @ 2023-10-07 13:30 Pengzt 阅读(8) 评论(0) 推荐(0) 编辑
摘要: P7624 令 \(d_i\) 表示 \(1\) 号车站到 \(i\) 号车站的距离,\(len\) 表示环形地铁的总长度。 考虑题中给的条件: \(type_i = 0\) 时,若 \(u_i < v_i\),即可表示为 \(d_{v_i} - d_{u_i} \ge L_i \iff d_{u_ 阅读全文
posted @ 2023-10-07 13:28 Pengzt 阅读(19) 评论(0) 推荐(0) 编辑
摘要: P9410 待补:根号分治做法 发现要支持区间加和连通块求和、合并,容易想到分块(虽然我一开始看错题了)。 完全不需要根号分治,直接分块即可。 考虑稍微暴力的分块。区间加的话,散块部分可以直接加到全局的 \(sum\) 数组中,毕竟不是区间求和,然后整块部分直接打标记,记录块内每个连通块的大小即可。 阅读全文
posted @ 2023-10-07 13:26 Pengzt 阅读(14) 评论(0) 推荐(0) 编辑
摘要: P9408 容易想到枚举最大值,令 \(f_{i, j}\) 表示前 \(i\) 个数变为不降序列且第 \(i\) 个数为 \(j\) 的最小操作次数。 先考虑暴力转移:\(f_{i,j} = f_{i - 1, k} + \text{chg}(a_i, j)\),其中 \(\text{chg}(i 阅读全文
posted @ 2023-10-07 13:23 Pengzt 阅读(3) 评论(0) 推荐(0) 编辑
摘要: P5313 看到值域比较,又支持离线,可以想到莫队和桶。 考虑先将桶按 \(b\) 分段,将每段分别进行按位与运算,做完第 \(i\) 段时用于运算的桶全都为 \(0\),就可以直接得到答案。这显然可以用 bitset 优化。但是 STL 的 bitset 不支持分裂操作,所以需要手写。 当 \(b 阅读全文
posted @ 2023-10-07 13:20 Pengzt 阅读(6) 评论(0) 推荐(0) 编辑
摘要: CF1829G 先将整个塔变为一个直角三角形的模样。这时就可以很好的用数组表示了,这时发现答案就是一个倒着的等腰直角三角形的和(不考虑边界)。 考虑预处理。 令 \(a_i\) 为点 \(i\) 所在的行数,\(f_i\) 表示 \(i\) 号点的答案,\(g_i\) 表示 \(i\) 和 它正上方 阅读全文
posted @ 2023-10-07 13:16 Pengzt 阅读(4) 评论(0) 推荐(0) 编辑
摘要: P8769 一道有意思的贪心题。 有一个很容易想到但是有误的贪心:从第 \(1\) 天开始,每次选择单价最低的购买,直到第 \(x\) 天。 但如果有一些单价较低且保质期极短的商品,和一些单价最低但保质期较长的商品,这个贪心就不会选择到单价较低的商品。 如果我们使时间逆流,就不会出现这样的问题,即从 阅读全文
posted @ 2023-10-07 13:15 Pengzt 阅读(43) 评论(0) 推荐(0) 编辑
摘要: UVA12716 一道挺有意思的位运算的题。 \(\gcd(a,b)\) 与 \(a\oplus b\) 本来是没有什么联系的,也不好直接转化。 那么就需要一个中间数进行转化,一般来说会是一个临界值,否则不好找答案。 先观察 \(\gcd(a,b),a\leqslant b\),可得 \(\gcd( 阅读全文
posted @ 2023-10-07 13:13 Pengzt 阅读(16) 评论(0) 推荐(0) 编辑
摘要: P8816 提供一种不一样的做法。 首先将每个点以横坐标为第一关键字,纵坐标为第二关键字排序。 一维的 dp 肯定不够,因为 dp 既要存最多点数,又要保存自由点的点数。 赛时没看 \(k\) 的范围,于是开了一个结构体。 \(dp_i.w\) 表示从当前起点开始且于 \(i\) 点结束的最多的点数 阅读全文
posted @ 2023-10-07 13:12 Pengzt 阅读(36) 评论(0) 推荐(0) 编辑
摘要: ABC281F 先将每一个 \(a_i\) 二进制拆分。 因为每一位的 \(\text{xor}\) 运算是互不影响的,于是可以考虑每一位。 从高位到低位考虑,因为 \(a_i < 2^{30}\),所以二进制状态下的 \(a_i\) 的长度是 \(\le 29\) 的。 假设在考虑 \(bit\) 阅读全文
posted @ 2023-10-07 13:09 Pengzt 阅读(12) 评论(0) 推荐(0) 编辑
摘要: CF429D 令 \(sum_i\) 表示 \(\sum \limits_{j=1}^{i} {a_j}\)。 则 \(g(i, j) = (sum_j - sum_i)\)。 \(f(i, j) = (i - j)^2 + g(i, j)^2 = (i - j) ^ 2 + (sum_i - su 阅读全文
posted @ 2023-10-07 13:06 Pengzt 阅读(2) 评论(0) 推荐(0) 编辑
摘要: CF1139E 翻译中有一句话:校长将会从每个社团中各选出一个人。 就是一些人被分为一组,从每组中选一些人出来。 这就很容易想到通过二分图的匹配。 \(\text{mex}\) 运算有一个显而易见的贪心:枚举每个值能否被匹配,第一个找不到的值就是答案。 由于 \(\text{mex}\) 运算的值域 阅读全文
posted @ 2023-10-07 13:05 Pengzt 阅读(8) 评论(0) 推荐(0) 编辑