做题记录 25.7.3
\(\textcolor{purple}\odot\) CF1704F Colouring Game
记 \(\text{Alice}\) 为 \(\text R\) 方,\(\text{Bob}\) 为 \(\text B\) 方
当 \(\text R\) 和 \(\text B\) 数量不同时,多的一方胜
证明:
- 只存在一种颜色时显然
- 同时存在 \(\text B\) 和 \(\text R\) 时,显然 \(\text R\) 方想要令 \(cnt(\text R)-cnt(\text B)\) 最大,\(\text B\) 方想要令 \(cnt(\text B)-cnt(\text R)\) 最大
- 因此存在 \(\text{BR}\) 或 \(\text{RB}\) 时,双方都会选择消除之
- 消除完 \(\text {BR}\) 和 \(\text{RB}\) 后,剩余若干 \(\text B\) 或 \(\text R\) 的连续段,且连续段之间不相邻
- 显然此时 \(\text{B}\) 方会选择 \(\text{BW}\) 或 \(\text{WB}\),\(\text R\) 方同理,因此剩余的 \(\text B\) 或 \(\text R\) 多的一方胜
当 \(\text R\) 和 \(\text B\) 数量相同时,选择的顺序相同,取走最后一个 \(\text{RB}\) 的胜
考虑每个极大 \(\text{R},\text B\) 交错段,显然段之间独立,每次可以从一个段中删去一个 \(\text{RB}\),考虑求出每个段的 \(\text{SG}\) 函数,将每段的值异或起来得到整体答案
令 \(f_n\) 表示长为 \(n\) 的交错段的函数值,则 \(f_1=0\),\(f_n=\text{mex}_{0\le i\le n-2}f_i\oplus f_{n-2-i}\),等于 A002187 的 \(n-1\) 项,其存在长为 \(34\) 的循环节,容易 \(O(1)\) 求值
总时间复杂度 \(O(\sum n)\)
\(\textcolor{purple}\odot\) CF1700F Puzzle
令 \(c_{i,j}=a_{i,j}-b_{i,j}\),转化为每次选择一对相邻位置,一个加一,一个减一,最终使得全为 \(0\)
若 \(\sum c_{i,j}\ne 0\) 显然无解
否则从左往右扫描,设扫到第 \(i\) 列,令 \(s_0,s_1\) 为目前两行的前缀和,且对应的数字都已经移到第 \(i\) 列
若 \(\text{sgn}(s_0)\ne\text{sgn}(s_1)\),以 \(s_0<0<s_1\) 为例,可以选出 \(mn=\min(|s_0|,|s_1|)\) 个从第二行移到第一行,答案加上 \(mn\),\(s_0\) 加上 \(mn\),\(s_1\) 减去 \(mn\)
然后令答案加上 \(|s_0|+|s_1|\),表示移到下一列
可证这样操作最优
时间复杂度 \(O(n)\)
\(\textcolor{blue}\odot\) CF1700E Serega the Pirate
一个局面合法当且仅当除 \(1\) 外的所有位置周围都有小于它的值
显然一次交换操作至多消去 \(4\) 个不合法位置,因此当不合法位置 \(>4\) 时直接输出 \(2\)
特判 \(0\) 的清空
要使局面合法,显然交换的两个位置中,至少一个为不合法位置或与不合法位置相邻
总可能性不超过 \(4\times 5\times nm=20nm\)
对于每种可能,方案合法当且仅当操作后的矩阵中所有位置都合法,只要检测初始不合法位置、交换的两个位置、及与它们相邻的位置即可,不超过 \(30\) 个
总时间复杂度 \(O(nm)\),常数约为 \(20\times 30\)
\(\textcolor{purple}\odot\) CF1699E Three Days Grace
令 \(a_s\) 表示初始数组中是否存在 \(s\)
从小到大枚举集合最小值 \(l\),令 \(f_x\) 表示将 \(x\) 分解为若干数之积,满足每个数都 \(\ge l\) 的情况下,最大数的最小值,则集合的最大值 \(r=\max_{s\mid a_s} f_s\)
从 \(l-1\) 移到 \(l\) 时,\(f_l\gets l,\forall l\le x\le \frac ml,f_{xl}\gets f_x\)
显然 \(f\) 单调不增
用桶维护 \(\{f_s\mid a_s\}\),则 \(r\) 可 \(O(m)\) 维护
总时间复杂度 \(O(\sum (n+m\ln m))\)
\(\textcolor{blue}\odot\) CF1699D Almost Triple Deletions
区间 \([i,j]\) 可被删除当且仅当 \(2\mid (j-i+1)\) 且 \([i,j]\) 的众数出现次数不超过一半
证明:
- 显然为必要条件
- 当众数出现次数不超过一半时,一定存在一个非众数与众数相邻,删除两者,众数出现次数仍然不超过一半,直到删空
\(O(n^2)\) 预处理后容易 \(O(1)\) 判断一个区间能否被删除,令 \(D(i,j)\) 表示 \([i,j]\) 能否被删除
令 \(f_i\) 表示前缀 \([1,i]\) 中删除若干位置使得剩下的都是 \(a_i\),所能剩下的最多的数量
假定 \(a_{n+1},a_0\) 和任意 \(a_i\) 都相同
则 \(f_0\gets 0\),\(f_i\gets [a_j=a_i][D(j+1,i-1)](f_j+1)\)
答案为 \(f_{n+1}-1\)
\(\textcolor{blue}\odot\) CF1698E PermutationForces II
等价于第 \(i\) 次操作选择 \(i\le x\le y\le \min(i+s,n)\),交换 \(a'_x,a'_y\),最终令 \(a'=b'\)
显然 \(b'_i\in \{a'_{1\sim \min(i+s,n)}\}\)
容易 \(O(n)\) 判出不完整序列违反上述要求的情况,此时显然无解
若第 \(i\) 次操作中 \(x\ne i\),则对之后的操作的影响与 \(x=y=i\) 时等价,因此强制令 \(x=i\),即第 \(i\) 次操作令 \(b'_i\) 归位
即第 \(i\) 次操作决定了最终的 \(b'_i\)
等价于在 \(\{a'_{1\sim \min(i+s,n)}\}/\{b'_{1\sim i-1}\}\) 中选择一个数作为 \(b'_i\)
而 \(\{b'_{1\sim i-1}\}\) 分为两部分,一部分为初始确定的,记为 \(\{b^\ast_{1\sim i-1}\}/\{-1\}\),另一部分为之后确定的,大小为 \(\sum_{j=1}^{i-1}[b^\ast_j=-1]\)
显然 \(b'_i\) 选择的方案数为 \(\{a'_{1\sim \min(i+s,n)}\}\) 中没有在 \(\{b^\ast_{1\sim i-1}\}/\{-1\}\) 中出现过的数量 减去 \(b^\ast_{1\sim i-1}\) 中 \(-1\) 的数量
显然前者等于 \(\{a'_{1\sim \min(i+s,n)}\}\) 中没有在 \(\{b^\ast_{1\sim n}\}/\{-1\}\) 中出现过的数量
容易 \(O(n)\) 计算
总时间复杂度 \(O(\sum n)\)

浙公网安备 33010602011771号