摘要: CF396C 考虑将贡献表示出来:\(\forall v\in \text{subtree}_u\),\(v\) 会加上 \(x - (dep_v - dep_u)k\),然后发现这个东西可以维护整棵子树,即把 \(x,dep_u\times k\) 和 \(dep_v\times k\) 分开计算 阅读全文
posted @ 2023-12-27 23:19 Pengzt 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 会持续更新。 阅读全文
posted @ 2023-12-27 15:50 Pengzt 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 慢慢更。 阅读全文
posted @ 2023-12-27 10:49 Pengzt 阅读(48) 评论(0) 推荐(0) 编辑
摘要: ARC167D 看到排列并且有 \(i\gets a_i\),就可以直接建出图来,显然是若干个不相干的环。 如果不求字典序最小,就可以直接不在同一个环中的 \(i,j\) 直接交换就可以了,因为它要求了最小化操作数。如果求字典序最小,直接从前往后扫一遍,可以用 set 维护不在这个环中且 \(j>i 阅读全文
posted @ 2023-12-27 10:28 Pengzt 阅读(8) 评论(0) 推荐(0) 编辑
摘要: P6370 暴力是很容易的,可以直接搜索。 发现可以直接对暴力进行优化。每次有一个地方变为 O 后,重构代价太大,设这个坐标为 \((i, j)\),同时维护一个类型为 pair<int, int> 的 \(to\) 数组表示将球放在第 \(i\) 列第一行的时候,最后到达的位置。再用一个 \(pa 阅读全文
posted @ 2023-12-27 10:21 Pengzt 阅读(3) 评论(0) 推荐(0) 编辑
摘要: P5513 容易发现,每次等价于对一个二进制数进行操作。但是这个二进制数长为 \(n\),即需要高精。但是这样支持加一和减一是复杂度会退化为 \(\mathcal{O}(n^2)\),有一个很正常的做法就压位,仿照 bitset 的做法进行操作,复杂度 \(\mathcal{O}(\frac{n ^ 阅读全文
posted @ 2023-12-27 10:19 Pengzt 阅读(4) 评论(0) 推荐(0) 编辑
摘要: ARC105E 正向考虑是很难的,从结果入手,发现最后一定是分别包含 \(1\),\(n\) 的两个完全图。 考虑表示出这两个人一共加了多少边:\(\frac{n(n-1)}{2}-m-x(n-x)\),\(x\) 表示点 \(1\) 所在集合的大小。 由于是判断先手还是后手必胜,所以只需看结果对 阅读全文
posted @ 2023-12-27 10:16 Pengzt 阅读(3) 评论(0) 推荐(0) 编辑
摘要: P9032 考试题。 发现 \(g\) 的值是若干个相同的段,且段数很少,因为每次取 \(\gcd\) 至少会将值域变为原来的一半。所以段数是 \(\mathcal{O}(\log V)\) 的。 然后就可以从小到大枚举左端点,然后枚举 \(g\) 的值,找的是最远的满足 \(\gcd(a_l,\d 阅读全文
posted @ 2023-12-27 10:04 Pengzt 阅读(8) 评论(0) 推荐(0) 编辑
摘要: CF1896D 如果只有单次询问其实可以双指针,但是这个难以进行拓展。 考虑找点性质。 发现 \(a_i,v\in\{1,2\}\),从值域上下手。发现若存在和为 \(S\) 的方案,则一定有和为 \(S-2\) 的方案,因为可以直接 \(-2\) 或 \(-1-1\)。 然后就变为找最大的和为奇/ 阅读全文
posted @ 2023-12-27 10:02 Pengzt 阅读(5) 评论(0) 推荐(0) 编辑
摘要: P4338 先考虑怎么安排崛起的先后顺序最优。 但是发现好像没有一个很好的顺序去进行崛起,并且由于 \(a_i\) 的值域会很大,所以即使知道顺序应该也会难以进行维护。 转换一下方向,正难则反。考虑每个点的贡献,但是颜色不同时只会算一次,所以要钦定是哪一个点造成的贡献。令当前考虑的点为 \(u\), 阅读全文
posted @ 2023-12-27 10:01 Pengzt 阅读(7) 评论(0) 推荐(0) 编辑