做题记录 25.6.5
\(\textcolor{blue}\odot\) CF1790G Tokens on Graph
点 \(1\) 处本身就有棋子的情况显然合法,特判
点 \(i\) 可以到 \(1\) 的必要条件为存在 \(1\) 到 \(i\) 的路径,满足路径上除了 \(1\) 和 \(i\) 外都是关键点
对于每个 \(i\) 求出所有满足上述条件的路径中最小的长度,容易 \(\text{bfs}\) \(O(n+m)\) 求出
对于 \(i\),若存在路径且 \(i\) 处存在棋子,设最短长度为 \(x\),则点 \(i\) 合法当且仅当从 \(i\) 处移除一个棋子后,剩余棋子的最大总移动步数之和不小于 \(x-1\),显然棋子之间独立
对于点 \(x\) 处的棋子,若 \(x\) 为关键点且存在关键邻点,显然每个棋子都可无限移动
若 \(x\) 不是关键点,且存在一个存在关键邻点的邻点,则同样可以无限移动
若 \(x\) 不是关键点且存在关键邻点,且 \(x\) 所有关键邻点都不存在关键邻点,则 \(x\) 上每个棋子只能移动一步
若 \(x\) 不是关键点且不存在关键邻点,则不可移动
求出总移动步数后减去 \(i\) 处一个棋子的移动步数即可
时间复杂度 \(O(\sum (n+m))\)
\(\textcolor{purple}\odot\) CF1788F XOR, Tree, and Queries
令 \(a_i\) 表示 \(1\) 到 \(i\) 的链的边权异或和,则限制 \((u,v,x)\) 相当于令 \(a_u\oplus a_v=x\)
边带权并查集维护所有 \(a_i\) 之间的关系,若存在矛盾则无解
显然 \(a_1=0\),强制令 \(a_0=0\),将 \(a_0\) 和 \(a_1\) 所在集合合并,并强制令 \(a_0\) 为代表元
令 \(F(i)\) 表示 \(i\) 所在集合的代表元,每个代表元可以有一个未知量 \(X_{F(i)}\),特别地 \(X_0=0\),这样实际上 \(a_i=X_{F(i)}\oplus d_i\),其中 \(d_i\) 可在并查集中维护
令 \(w_i\) 为 \(i\) 到 \(f_i\) 的边权,\(w_1=0\),则 \(w_i=a_{f_i}\oplus a_i=X_{F(i)}\oplus X_{F(f_i)}\oplus d_i\oplus d_{f_i}\)
答案为 \(\bigoplus_{i=2}^n w_i\),可表示为 \(c\oplus \bigoplus_{u\in S}X_u\),若 \(S\ne \mathbb\emptyset\),则从 \(S\) 中取出任意一个 \(X_u\) 赋值为 \(c\),剩余的 \(X_\ast\) 赋为 \(0\),显然这样保证了所有边权的异或和最小
得到 \(X\) 后容易推出每条边的边权
\(\textcolor{purple}\odot\) CF1787F Inverse Transformation
等价于给定一个排列 \(p\),给出经过 \(k\) 次 \(p_i\gets p_{p_i}\) 的变换后的 \(p'\),要求初始的 \(p\) 置换环数量最小,构造出一个合法的 \(p\)
经过一次变换后,偶环裂为大小相同的两个,奇环大小不变但内部置换
因此对于最终的 \(p'\),设大小为 \(sz\) 的置换环有 \(c_{sz}\) 个,当 \(2\mid sz\) 且 \(2^k\nmid c_{sz}\) 时无解
否则考虑把 \(c_{sz}\) 二进制拆分,\(>2^k\) 的进一步拆分,得到的每一组在开始时对应一个置换环,显然这样数量最少
构造方案可参考 官方题解
时间复杂度 \(O(\sum n)\)
\(\textcolor{purple}\odot\) CF1789F Serval and Brain Power
\(k=2\) 和 \(k=3\) 时枚举分界点,求出 \(k\) 段的 \(\text{lcs}\) 即可,时间复杂度 \(O\left(n^{k-1}\cdot \left(\frac nk\right)^k\right)=O\left(\frac{n^{2k-1}}{k^k}\right)\)
\(k=4\) 的情况包含于 \(k=2\) 的情况,不需要考虑
\(k>4\) 时,显然对于一种取子串的方式,原串中必然存在一个长为 \(\lfloor\frac nk\rfloor\) 的区间完全包含一个周期,\(O(n2^{\frac nk})\) 枚举,\(O(n)\) 匹配即可
总时间复杂度 \(O\left(\sum_{k\le n,k\in\mathbb P}\min\left(\frac{n^{2k-1}}{k^k},n^22^{\frac nk}\right)\right)\)
\(\textcolor{purple}\odot\) CF1789E Serval and Music Game
对于 \(x\mid s_n\),\(f(x)=\sum_{i=1}^n [\frac{s_n}x\mid s_i]\),枚举 \(\frac{s_n}x\) 的倍数暴力统计即可
对于 \(x\nmid s_n\),根据 \(\lfloor\frac{s_n}x\rfloor\) 划分为 \(O(\sqrt {s_n})\) 段,则段内的 \(f(x)\) 相同
令 \(k=\lfloor\frac{s_n}x\rfloor\),此时 \(f(x)=\sum_{i=1}^n [\lfloor\frac{s_i}k\rfloor\ge s_i\bmod k]\),当 \(s_i\ge k^2\) 时显然成立,\(s_i<k^2\) 时枚举 \(0\le \lfloor\frac{s_i}k\rfloor<k\),预处理 \(s\) 的桶的前缀和,容易 \(O(\sqrt {s_n})\) 计算一个 \(f(x)\)
总时间复杂度 \(O(\sum (\sum_{d\mid s_n}\frac{s_n}x+\sqrt{s_n}\cdot \sqrt {s_n}))=O(\sum s_n\log\log s_n)\)
\(\textcolor{blue}\odot\) CF1783E Game of the Year
即求有多少 \(k\) 满足 \(\forall i,\lceil\frac{a_i}k\rceil\le \lceil\frac{b_i}k\rceil\)
显然可以忽略 \(a_i\le b_i\) 的 \(i\)
对于 \(a_i>b_i\),相当于所有在 \([b_i,a_i)\) 中存在倍数的 \(k\) 都不合法
标记区间 \([b_i,a_i)\),则最终不存在倍数被标记的 \(k\) 合法
时间复杂度 \(O(\sum n\ln n)\)
\(\textcolor{purple}\odot\) CF1783G Weighed Tree Radius
答案等于 \(\left\lceil\frac {\max_{u,v}(dis(u,v)+a_u+a_v)}2\right\rceil\),因此需要维护直径
线段树分治,转化为初始一棵边权为 \(1\) 的树,每次在一个结点处加上两条长为给定权值的链,或撤销,过程中维护直径,容易每次 \(O(\log n)\) 维护,总复杂度 \(O(n\log^2 n)\)
\(\textcolor{purple}\odot\) CF1781F Bracket Insertion
总方案数为 \((2n-1)!!\),考虑求出总合法方案数
令 \(f_{i,j}\) 表示操作 \(i\) 次(即长度为 \(2i\)),初始为 \(j\)(即当前这一段中间括号层数不能小于 \(-j\)),显然 \(f_{0,i}=1\),答案为 \(\frac{f_{n,0}}{(2n-1)!!}\),转移为
容易优化到 \(O(n^3)\)

浙公网安备 33010602011771号