摘要:
简介 LCT 是常用的一种动态树。对于一般的树上问题,我们会用树剖解决,但是如果遇到动态增删边的问题就需要 LCT 来解决。 LCT 的本质上是一种链剖分,我们将所有的边剖分为虚边和实边,所以整棵树是由若干条实链构成的,实链之间用虚边相连。 我们通过 splay 来维护实链的信息,并以从上到下的顺序 阅读全文
摘要:
QOJ1284. Partition Number 给定集合 \(A\),求 \(m\) 的分拆数,不包括 \(A\) 中的元素。 \(|A| \le 500, m \le 3 \times 10^5\)。 直接容斥,我们可以选定 \(A\) 中的一些数必须用,方案就是 \(p(m - \sum_{ 阅读全文
摘要:
EI 的博客 可以 \(O(n \sqrt n)\) 计算。 int p[M] = {0}, tmp[M] = {0};//分拆数 void init(int n) {//算出所有小于等于 n 的分拆数 int b = sqrt(n); p[0] = tmp[0] = 1; for (int i = 阅读全文
摘要:
类欧几里得 类欧几里得算法解决这样的问题: \[f(p, q, r, n) = \sum_{x=0}^n[\frac{px+r}{q}] \]可以理解为一条直线下方的整点个数。 第一步 首先,我们可以将 \(r\) 对 \(q\) 取模,从而提取出一个不变量。 第二步 我们可以继续将 \(p\) 对 阅读全文
摘要:
题意: 有 \(m\) 个物品,全部分给 \(n\) 个人,\(a_{i,j}\) 表示第 \(i\) 个人能否分到第 \(j\) 物品。求一个分配方案,设 \(h_i\) 表示第 \(i\) 个人得到的物品数量。求 \(\sum_{i,j}|h_i - h_j|\) 最小值。 思路: 设 \(f( 阅读全文
摘要:
题意: 给定一张 \(n\) 个点 \(m\) 条边的网络,源点为 \(1\),汇点为 \(n\)。对于每条边,有容量 \(c\),当前流量 \(f\)。 但这个图是错误的,可能存在 \(c < f\),或者流量不守恒的情况。你每次操作可以将某条边的 \(c\) 或 \(f\) 加 \(1\) 或减 阅读全文
摘要:
题意: 若干区间,区间有权值,选择一个子集,使得权值和尽量大并且每个点不被覆盖超过 \(x\) 次。 \(n \le 500\) 思路: 很神奇的一道题。 我们考虑费用流,如果单纯的一边是区间一边是点的话其实并不好做,所以这道题我们直接建一排 \(n+2\) 个点,一个区间 \(l, r\) 就从 阅读全文
摘要:
题意: 给定 \(n-1\) 个点集(全集为 \(\{1,2,\ldots,n\}\)),从每个集合内选两个点连边,使得最后形成一棵树。输出方案。 \(n \le 10^5\) 思路: AGC 全是神仙题。 考虑树的性质,每个点除了根节点外刚好有一个父节点。而每条边必然连接了一个父节点和一个子节点。 阅读全文
摘要:
题意: 你有 \(n\) 个朋友,他们会来你家玩,第 \(i\) 个人 \(1...A_i\) 天来玩,然后 \(A_i+1...2A_i\) 天不来,然后 \(2A_i+1...3A_i\) 又会来,以此类推 每天你会选一个来玩的人,给他颁个奖,如果没人来玩,你就不颁奖。 你要给每个人都颁 \(K 阅读全文
摘要:
题意: 计算满足如下条件的带标号有根树数量: 这棵树一共有 \(n\) 个节点。 每个节点都有一个整数权值,且在区间 \([1,m]\) 内。 每个节点的权值都不大于其父节点的权值。 \(n,m \le 400\) 思路: 好题。 对于这种计数问题,肯定第一眼会想到 \(dp\),我们设 \(f_{ 阅读全文