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)\) .

Submission .

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)\) .


posted @ 2023-05-04 19:36  Jijidawang  阅读(79)  评论(0编辑  收藏  举报
😅​