做题记录 26.2.18
\(\textcolor{black}\odot\) P10198 [USACO24FEB] Infinite Adventure P
令 \(a\) 表示题目中的 \(T\)
对于每个 \(1\le u\le n\),\(0\le x<a_u\),\(i\ge 0\),令 \(f_{u,x,i}\) 表示从 \(u\) 出发,初始时间为 \(x\),经过 \(2^i\) 个 \(=a_u\) 的 \(a\) 后所到的点或在 \(>a_u\) 的点停止,\(g_{u,x,i}\) 表示其步数
令 \(S=\sum a_i\),\(V=\max(\max t,\max \Delta)\),容易 \(O(S\log V)\) 预处理 \(f\) 和 \(g\)
查询 \((u,t,\Delta)\) 时,不断倍增,\(O(\log S)\) 轮倍增后 \(a\) 达到最大值,之后减少,总计 \(O(\log S)\) 轮倍增,每轮 \(O(\log V)\)
总时间复杂度 \(O(S\log V+q\log S\log V)\)
\(\textcolor{black}\odot\) AT_agc029_f [AGC029F] Construction of a tree
一个必要条件为任意 \(S\subseteq [1,n-1]\) 有 \(|\bigcup_{i\in S} E_i|\ge |S|+1\)
通过构造证明这是充分的
每个 \(E_i\) 建一个右部点,每个结点建立一个左部点,若 \(u\in E_i\) 则 \(L(u)\) 和 \(R(i)\) 连边,建立二分图
根据 \(\text{Hall}\) 定理,此时必然存在右部点的完美匹配,求出任意一组,则左部点中恰好存在一个点没有匹配,设这个点为 \(r\)
任选一个与之相连的还没有选过的右部点 \(u\),选择与之匹配的左部点 \(w\),\(E_u\) 取 \(r\) 和 \(w\),然后对 \(w\) 递归处理
原命题成立相当于对于任意满足条件的图,以上过程都可遍历整张图
若无法遍历整张图,则某时刻走过的左部点比右部点多 \(1\),从而对于未遍历过的右部点集合 \(S\) 有 \(|S|\ge |\bigcup_{i\in S}E_i|\),与条件矛盾
以上过程容易做到 \(O(m\sqrt n)\),其中 \(m=\sum_i |E_i|\)
\(\textcolor{black}\odot\) AT_agc065_f [AGC065F] Always Perfect
先考虑如何判定一张给定的图是否合法
建立圆方树,考虑一个点双 \(S\),对于 \(u\in S\),定义 \(D(u)\) 为圆方树上去掉 \(S\) 对应方点后 \(u\) 所在连通块的圆点数量
定理 \(1\):对于合法图中任意点双 \(S\),所有 \(u\in S\) 的 \(D(u)\bmod 2\) 相同
证明:
- 若存在点双使得其中两点的 \(D(u)\bmod 2\) 不同,显然可以从点双中找出两相邻点 \(u,v\) 使得 \(D(u)\bmod 2=0,D(v)\bmod 2=1\)
- 以此点双对应方点为根,则完美匹配中,子树 \(u\) 内点必然不与子树外点匹配
- 构造生成树,\(v\) 只保留与 \(u\) 相连的边,显然必然存在这样的一棵生成树
- 此时 \(u\) 和 \(v\) 必然匹配,导致子树 \(u\) 内无法匹配,从而不合法
若一个点双中 \(D(u)\bmod 2\) 都是 \(0\),则此点双内的边必然不在完美匹配中
若一个点双中 \(D(u)\bmod 2\) 都是 \(1\),则要求点双任意生成树都有完美匹配
可证点双合法当且仅当任意点度数 \(\le 2\),即简单环,或只有两个点,称这样的点双为生成元
因此合法的图可以通过以下方式生成:取若干生成元,每次选择若干连通块,每个连通块中选择一点,将选出的点连成一个点双,直到整张图连通
考虑如何计数
令 \(g_n\) 表示 \(n\) 点的有标号连通图数量,显然
容易做到 \(O(n^2)\)
令 \(f_{i,j}\) 表示 \(i\) 个点且有 \(j\) 个点双的有标号连通图数量,显然 \(f_{i,1}=g_i-\sum_{j>1} f_{i,j}\),考虑对于 \(j>1\) 计算 \(f_{i,j}\)
考虑建立圆方树,令 \(1\) 为根,则有 \(j\) 个方点,设它们的儿子数量分别为 \(a_{1\sim j}\),则 \(\sum a=i-1\)
将方点和其所有儿子视为一个部分,\(1\) 单独一个部分,一共 \(j+1\) 个部分,连成树状结构,用 \(\text{Pr\"ufer}\) 序列计数得形成有根树的方案为 \(i^{j-1}\),每个连通块的贡献为 \(f_{a_k+1,1}\),对除 \(1\) 外 \(i-1\) 个点重编号方案数为 \(\binom{i-1}{a_1,a_2,\cdots,a_j}\),从而
容易背包得到,这部分时间复杂度 \(O(n^3)\)
考虑统计答案,同样建立圆方树,选择方点的一个独立集,剩余点双缩为一个点,则形式与求 \(f\) 类似
总时间复杂度 \(O(n^3)\)

浙公网安备 33010602011771号