摘要:
点分治 额,就是你每次去找一棵树的重心,然后将这棵子树变成以这个重心为根的树,再在这个树上进行某些操作,就可以在 的时间复杂度遍历到任意两个点 在 上某个点 为根时候的贡献了。那么对于类似于求点对 的 阅读全文
摘要:
CF1671E 注意到不同子树间的答案独立。那么对于 为根的子树,其贡献应该是其左儿子乘右儿子再乘它自己的方案。那么由于它自己的方案只与 有关,所以当其操作后能使答案贡献增加,当且仅当 。为了排除儿子自身的影响,我们将 \(f 阅读全文
摘要:
CF1787D 这里有个很典的 trick。我们将 向 连边,那么只要一个 或 的点能够走到 ,就说明 能在有限的次数内出去。这玩意跑个拓扑排序即可。那么现在我们可以考虑从 开始走,因为只能修改一个点的值, 阅读全文
摘要:
CF323C 注意到这是两个排列。考虑对于每个值 ,记录 表示其在第一个和第二个排列中的位置。那么 会被算进答案当且仅当 。那么这就相当于查询一个矩形内散点的数量。直接主席树维护即可 阅读全文
摘要:
写个题解。以后看一次后悔一次。 Tender Carpenter 不难发现,每个数单独一段一定是可行的。因为能够组成等边三角形。那么问题就变成了,能否分出一段长度不小于 的区间,使得其合法。显然的, 的可行性不大于 的可行性。那么枚举 \(l=i 阅读全文
摘要:
参考。 例题 序列 Sequence 分析 很显然的,我们可以得到一个 的 DP 做法。定义状态函数 表示前 个数, 的最小操作次数。其中 为原序列排序去重的结果。那么有转移方程:\(f_{i,j}=\min 阅读全文
摘要:
题解摘自做题记录。 分析 数据范围明显得要让我们分开搞。 【Sub2】 应该是暴力。这里有个主体思路,我们完全可以贪心地将当前背包里的食材删掉,直到每种出现过的食材数量刚好为 。因为我们保留更多的是没有用的。那么我们就可以用二进制数表示 种食材的出现状态了。 同时,可能存在当前 阅读全文