Solution Set -「LOCAL」冲刺省选 Round XXIX
\(\mathscr{Summary}\)
啊……说老实话,早上昏昏欲睡的,起码浪费了一个多小时。比赛打麻了 qwq。
A 题类似费用提前计算,回忆起这个 trick 之后就简单了。B 题又错付了,平衡树常数令人 😅,没注意到区间平移可以在数据结构之外进行。C 题打表,佛了。
\(\mathscr{Solution}\)
\(\mathscr{A}-\) RK
有 \(n\) 盏灯排成一排,在某时刻开始时操作灯 \(i\),会立即改变灯 \(i\) 的状态,在下一时刻末改变灯 \(i+1\) 的状态,下下一时刻末改变灯 \(i+1\) 的状态……直到改变了灯 \(n\) 的状态或者某一时刻所有灯关闭。给定初始状态,求至少需要到第几时刻,能让所有灯关闭。
多测,\(T\le2^{16}\),\(n\le16\)。
钦定时刻 \(r\) 时关完灯,\(f_r(i,S)\) 表示时刻 \(i\) 时能否达到状态 \(S\),每次操作灯时对灯序列的最终影响是确定的,所以 \(\mathcal O(n^32^n)\) 打表就好。
\(\mathscr{B}-\) WK
给定序列 \(\{a_n\}\),对于每个其子段 \(\{b_m\}\),每次操作选定 \(i\in[1,m)\),令 \(b_i\leftarrow b_i\pm1\),\(b_{i+1}\leftarrow b_{i+1}\mp1\),目标是使所有 \(K\mid b_i\)。求所有子段最小操作次数(无解算作 \(-1\) 次)之和。
\(n\le10^6\)。
对于 \(\{b_m\}\),显然有解当且仅当 \(K\mid \sum b_i\),此时最优操作次数为 \(\sum_{i=1}^{m-1}f\left(\sum_{j=1}^i b_i\bmod K\right)\),其中 \(f(x)=\min\{x,K-x\}\)。
计数?暴力一点,枚举右端点 \(r\),维护每个左端点 \(l\) 的内部 \(f\) 贡献以及到这个 \(r\) 时模 \(K\) 的余数。记贡献为 \(v\),余数为 \(r\),那么转移涉及的修改是对 \(\begin{bmatrix}v&r&1\end{bmatrix}^T\) 的线性变换,直接平衡树维护矩阵,复杂度 \(\mathcal O(n\log n)\) 理论正确。可以用线段树,也可以压缩矩阵数据量,总之我懒得写啦。
\(\mathscr{C}-\) SK
一个 boss,\(n\) 滴血,每回合你随机获得以下三种手牌:
之一,求期望需要多少回合消灭 boss。答案模 \(998244353\)。
显然是屯牌到最后一回合直接秒 boss,那么期望步数 = 期望恰好秒不掉 boss 的步数 +1 = 所有秒不掉 boss 的手牌被抽出来的概率和 +1。讨论牌型:
这几种比较好算,剩下的容斥,即“假设这些类型都出现过”,再继续打,依此计算手牌伤害,那么
都能矩阵加速求点值,注意容斥的时候还是要把伤害算成假设条件下的伤害。例如 \(1+2+3\) 下对 \(2+3\) 的容斥应为 \(D(x)=\frac{1}{3}(x^3+x^4)D(x)\)。合并同类项之后只需要四次矩阵快速幂。
复杂度 \(\mathcal O(T\log n)\),常数为矩阵乘法的 \(5^3\)。