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\) 计算即可。

浙公网安备 33010602011771号