2023.5.4 闲话
五四 HOHO .
99%
用 B 站美琴生日会的免费大会员连夜把 Lycoris Recoil 补了,orz . 让我最意外的竟然是 Good Ending .
ABC293Ex Optimal Path Decomposition
给一棵 \(n\) 个点的树,将树划分为若干条不交的路径,每条路径染一种颜色(不同路径间颜色不同). 求任意一条路径其经过的颜色数最大值的最小值 .
$ 1\leq n\leq2\times10^5 $ .
因为选的是路径每个点的同色儿子数肯定不超过 2,如果这个值恰等于 2 则对父亲肯定没有贡献,否则就可能有贡献 . DP 的话就是令 \(dp_{i,j}\) 为考虑以 \(i\) 为根的子树,有 \(j\) 个和根颜色相同的儿子 .
不过这样做的话转移有困难,因为对父亲和儿子的贡献不好平衡,那么考虑二分答案后进行这个过程,那么就可以简单平衡了 .
神秘 . 时间复杂度 \(\Theta(n\log n)\) 或者 \(\Theta(n\log\log n)\) .
CF1110C Meaningless Operations
令 \(\displaystyle f(a)=\max_{0<b<a}\gcd(a\oplus b,a\land b)\) .
\(q\) 组询问,每次给一个 \(a\),求 \(f(a)\) .
\(1\le q\le 10^3\),\(2\le a<2^{25}\) .
为了方便称形如 \(2^k-1\) 的整数为 FO 整数 .
速通方案:打表得到对于非 FO 整数 \(a\) 答案就是小于 \(a\) 的最大 FO 整数 .
对于 FO 整数特殊考虑,因为辗转相除法可以得到 \(\displaystyle f(a)=\max_{0<b<a}\gcd(a\lor b,a\land b)\) .
因为 FO 整数的特殊性质,有 \(a\lor b=a\),\(a\land b=b\),于是任务就变成求 \(a\) 的最大非平凡因子,暴力即可 .
时间复杂度 \(\Theta(q\sqrt a)\) .
速通方案结论证明:
如果对于非 FO 整数 \(a\),有答案 \(z\) 比小于 \(a\) 的最大 FO 整数还大,则观察 GCD 可以发现 \(a,b\) 必为以下三种情况:
- \(a=b=z\) .
- \(a=0,\,b=z\) .
- \(a=z,\,b=0\) .
第一、二不满足 \(b<a\),第三种观察可以发现 \(z\) 就是小于 \(a\) 的最大 FO 整数,证毕 .
CF1110D Jongmah
\(n\) 个麻将,第 \(i\) 个麻将上写着 \(a_i\in[1,m]\cap\Z\) .
问这些麻将最多组多少个三刻子或三顺子,每个麻将只能用一次 .
\(1\le n,m\le 10^6\) .
刻子取三个以上没有用,可以转成顺子 .
于是考虑 DP,令 \(dp_{x,a,b}\) 表示用 \(1\dots x\) 大小的麻将,附加 \(a\) 个形如 \((x-1,x,x+2)\) 的刻子,\(b\) 个形如 \((x,x+1,x+2)\) 的刻子即可 .
时间复杂度 \(\Theta(n)\) .
CF1110F Nearest Leaf
给一棵 \(n\) 个点的带权树 \(\mathcal T\),保证点权为一种可能的 DFS 序,且 \(1\) 号节点不是叶子 .
\(q\) 组询问,每次给三个整数 \(u,l,r\),回答 \(\displaystyle\min_{\substack{v\in[l,r]\cr v\text{ is leaf}}}\operatorname{dist}(u,v)\) 的值 .
\(n,m\le 5\times 10^5\) .
把所有询问挂节点上,首先一次 BFS 求出 \(1\) 的答案,然后考虑移一位对于每个点的距离影响相当于子树外全部加边权,子树内全部减边权,于是线段树动态维护即可 .
时间复杂度 \(\Theta((n+q)\log n)\) .
CF1119C Ramesses and Corner Inversion
给两个 01 矩阵 \(\{a_{n\times m}\},\{b_{n\times m}\}\),每次操作可以选一个矩形让四角元素取反,问能否操作使得 \(a,b\) 相等 .
\(1\le n,m\le 500\) .
首先把两个矩阵异或起来,问题变成每次可以选一个矩形让四角元素取反,问能否让矩阵全零 .
考虑一次操作修改两行两列,所以任意行列 \(1\) 的数量必须都为偶数才行 .
然后构造一组方案即可证明准确性,考虑权为 \(1\) 的点为 \((p_{1\dots k},q_{1\dots k})\),则对所有 \(p_i,q_i>1\) 操作以 \((1,1)\) 为左上角 \((p_i,q_i)\) 为右下角的矩形,显然除了第一行第一列都归零,又根据奇偶性即可得到全矩阵归零 .
根据以上规则判断,时间复杂度 \(\Theta(nm)\) .
CF1119E Pavel and Triangles
给序列 \(\{a_n\}\),问 \(a_i\) 个 \(2^i\) 长的线段共能组成多少三角形 .
\(n\le 3\times 10^5\) .
好猜的贪心,满足答案的三角形 \((2^a,2^b,2^c)\) 只可能是 \(a<b=c\) 或者 \(a=b=c\) 的形式,根据直觉优先选 \(a<b=c\) 的即可,证明可以试考虑每条边是否被浪费这种 .
时间复杂度 \(\Theta(n\log n)\) .
CF1178D Prime Graph
给整数 \(n\),构造一张 \(n\) 个点的简单图,要求每个点的度数都是素数且边数是素数 .
\(3\le n\le 10^3\) .
简单构造题 . 首先众所周知的是 \(n\) 个点的 \(k\)-正则图有 \(nk/2\) 条边 .
\(2,3\) 都是素数,考虑把 2-正则图逐渐加边加成 3-正则图(\(n\) 是奇数时就是一个点是 2 度其他点度均为 3 的图).
这样每个点的度只会是 \(2,3\),总边数的范围是 \([n,1.5n]\),根据某定理可以知道这个区间内必有一素数,于是做完了 .
时间复杂度 \(\Theta(n)\) .
CF1178E Archaeology
给一个只有 \(\tt a,b,c\) 的长度为 \(n\) 的字符串,相邻两字符不相同,输出任意一个长度不小于 \(\left\lfloor\dfrac n2\right\rfloor\) 的回文子序列 .
\(2\le n\le 10^6\) .
考虑每次取出首尾各两个字符,显然左右必有相同字符,取了之后缩两格重复过程即可,不难发现方案满足条件 .
时间复杂度 \(\Theta(n)\) .
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/17372270.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ