SDOI2023 第三轮省队集训 题解

模拟赛

D1T1. 染色

相当于二维度:位置、时间。对时间一维很难考虑,考虑 对位置扫描线,记 \(f_{i,j}\) 表示考虑到 \(i\),且 \(i\) 染颜色 \(j\) 的方案数。枚举 \(k\ne i\),且 \(\text{mn}_i\ge \min(i,k)\) 转移。

注意到仅仅需要记录 \(j\)\(\text{mn}_i\) 的大小关系,设 \(f_{i,0/1/2}\),枚举 \(i+1\) 颜色转移。单次询问 \(\mathcal{O}(n+m)\),多次询问,得到 \(\text{mn}\) 即可 \(\mathcal{O}(m+nq)\)

D2T2. 01 串

计数很奇怪,题目也就很诈骗。

注意到选择 \(w\) 操作后,左右独立互不影响。由于 \(1\) 的数量改变此时一定不存在 \(x\),对于左部,将 \(t_i=1\) 看作右括号,\(s_i=1\) 看作左括号,失配的右括号数量即 \(1\) 的个数。

注意到 \(w\) 满足单调性,线段树二分寻找可行解。

D3T3. 树链

D2T1. 子序列(空间 32 MiB)

\(u\)\(u\) 后面第一个合法区间右端点连边建树。

离线扫描,维护到当前点的树上并查集,或者建树树剖,暴力跳重链,链中二分。

D2T2. 树上选点

找到 \(u\to v\) 路径与最远点的交,在交点换根计数。容易证明只会计数一次。

D2T3. 帽子

考虑一个人,看到其他帽子颜色,做出决策 \(b\ (0/1)\)。注意到自己帽子的颜色可能是 \(0\)\(1\),因此分别对应着两个状态,记为
\(S\)\(T\)

\(2^n\) 个状态建图,每个状态拆点,分别表示两种颜色的帽子。如果两种状态 \(S,T\) 仅一位不同,则那个人 \(k\) 无法分辨两个状态,如果 \(S_{k}=0\),将 \(S[0]\)\(T[1]\) 连边。现要将边定向,使得每个点入度大于一半。建虚点跑欧拉回路即可。

题目选讲

CF1764G3 Doremy's Perfect DS Class (Hard Version)

P9393 紫丁香

Classical Maximization Problem

横纵坐标连边,得到一个二分图。可以证明,每个连通块的匹配数可达上界 \(\dfrac{m}{2}\)。在 DFS 树上构造,对儿子两两匹配,可能会剩下父亲的边,留给父亲构造即可。

路径

注意到一共只有 4 种情况,问题转化为判定两条路径是否有交,可以树剖 $\log^2 $ 判定。但事实上,两路径有交当且仅当 \(d(a,b)+d(c,d)=d(a,c)+d(b,d)\)\(d(a,b)+d(c,d)=d(a,d)+d(b,c)\)

Swapping Operation

称 使得前后缀异或值不同的点 为 前 / 后缀关键点,考虑对交换点分类讨论:

  • 交换两个关键点
  • 交换两个非关键点
  • 交换关键点与非关键点 \((i,j)\):此时后缀异或值变为 \(f(k+1,n)\operatorname{\&} a_i\),前缀变为 \(f(1,i-1)\operatorname{\&} a_j\operatorname{\&} f(i+1,k)\)。而 \(f(1,i-1)\operatorname{\&}f(i+1,k)\) 只有 \(\log^2\) 种取值,所以枚举 \(i\),枚举 \(k\in [l,r]\) 再对 \(j\) 计算即可。
posted @ 2023-07-14 21:55  Network_Error  阅读(109)  评论(0)    收藏  举报