做题记录 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)!!}\),转移为

\[f_{n,x}=\sum_{a+b+c=n-1}\binom{n-1}{a,b,c}f(a,x)(pf(b,x+1)+(1-p)f(b,x-1))f(c,x) \]

容易优化到 \(O(n^3)\)

代码

参考

posted @ 2025-06-07 08:28  Hstry  阅读(6)  评论(0)    收藏  举报