做题记录 25.8.7

\(\textcolor{blue}\odot\) CF1609E William The Oblivious

用一颗线段树保存 \(s\),每个结点保存一个矩阵 \(\begin{bmatrix}A&AB&ABC\\ \infty&B&BC\\ \infty&\infty&C\end{bmatrix}\)\(A,B,C,AB,BC,ABC\) 分别表示令区间中不存在子序列 \(A/B/C/AB/BC/ABC\) 所需的最小修改次数,发现信息合并就是 \((\min,+)\) 矩乘

容易做到 \(O(q\log n)\)

代码

参考

\(\textcolor{purple}\odot\) CF1608E The Cells on the Paper

显然只需要考虑品字形和目字形即可

考虑它们的旋转,以及三种颜色的置换,一共有 \((2+4)\times 6!=36\)

预先对所有点排序,二分 \(k\),枚举每种情况,判定容易做到线性

总时间复杂度 \(O(n\log n)\)

代码

\(\textcolor{blue}\odot\) CF1608D Dominoes

\(\text W\to 0\)\(\text B\to 1\)\(\text ?\to 2\),令 \(c_{i,j}\)\(\overline{ij}\) 的数量

\(wl=\sum c_{0,\ast}\)\(wr=\sum c_{\ast,0}\)\(bl=\sum c_{1,\ast}\)\(br=\sum c_{\ast,1}\)\(ql=\sum c_{2,\ast}\)\(qr=\sum c_{\ast,2}\)

假如所有 \(\text ?\) 都确定了,则 \(c_{0\sim 1,0\sim 1}\) 合法当且仅当 \(c_{0,0}=c_{1,1}\),且 \(c_{0,1}>0\land c_{1,0}>0\) 时额外要求 \(c_{0,0}=c_{1,1}>0\)(对于 \(\overline{ij}\)\(i\)\(\lnot j\) 连边,则要求连出的图存在欧拉回路,容易得出以上结论)

考虑求出 \(c_{0,0}=c_{1,1}\) 的方案数,然后减去 \(c_{0,1}>0\land c_{1,0}>0\land c_{0,0}=c_{1,1}=0\) 的方案数即为答案

对于前者,枚举 \(c_{0,0}=c_{1,1}=i\),此时 \(c_{1,0}=c_{0,1}=n-i\),贡献为 \(\binom {ql}{i-bl}\binom{qr}{n-i-br}\)

对于后者,进一步拆为 \(c_{0,0}=c_{1,1}=0\) 的方案数减去 \(c_{0,1}>0\land c_{1,0}=c_{0,0}=c_{1,1}=0\) 的方案数减去 \(c_{1,0}>0\land c_{0,1}=c_{0,0}=c_{1,1}=0\) 的方案数,第一项显然等于 \([c_{0,0}=c_{1,1}=0]2^{c_{2,2}}\)(此处的 \(c\) 为根据不完整的 \(s\) 计算出的),后面两项分别等于 \([wl=br=0]\)\([wr=bl=0]\)

总时间复杂度 \(O(n)\)

代码

参考

\(\textcolor{blue}\odot\) CF1606D Red-Blue Matrix

将所有行按第一列的值升序排序后,显然是选择 \(n\) 行的一个前缀为蓝色,剩余的行为红色

行分割点有 \(n-1\) 种选择,列分割点有 \(m-1\) 种选择,总计 \((n-1)(m-1)\) 种选择,对于每个位置预处理左上 \(\max\),右上 \(\min\),左下 \(\min\),右下 \(\max\),即可 \(O(1)\) 判定

容易做到 \(O(\sum (n\log_n V+nm))\)

代码

参考

\(\textcolor{blue}\odot\) CF1605E Array Equalizer

\(c_i=a_i-b_i\),则转化为最终令 \(c\) 变为 \(0\)

\(b_1=x\),从 \(1\)\(n\) 枚举 \(i\),对于所有 \(k>1\),令 \(c_{ik}\) 减去 \(c_i\),然后令操作次数加上 \(|c_i|\)

显然最终操作次数可以写为 \(\sum_{(k,b)}|kx+b|\)(其中 \(k\ge 0\)

\(bs=\sum_{(k,b)\mid k=0}|b|\),则答案为 \(bs-\sum_{(k,b)\mid \frac bk<-x}(kx+b)+\sum_{(k,b)\mid \frac bk>-x}(kx+b)\)

将二元组根据 \(\frac bk\) 排序,并计算其前缀和,单次询问容易做到 \(O(\log n)\)

总时间复杂度 \(O((n+q)\log n)\)

代码

\(\textcolor{purple}\odot\) CF1603F October 18, 2017

\(x=0\) 时,相当于要求 \(a\)\(n\) 个数线性无关,方案数显然为 \(\prod_{i=1}^n (2^k-2^{i-1})\)(枚举每个,选择第 \(i\) 个时不能在前 \(i-1\) 个张成的空间中,因此 \(2^{i-1}\) 个不能选),\(n>k\) 时答案为 \(0\),容易 \(O(k)\) 求出

\(x>0\) 时,相当于要求 \(x\) 不在 \(a\) 张成的空间内

可证答案为

\[\sum_{i=1}^k (-1)^{i-1}(2^{k-i})^{n+1}\prod_{j=1}^{i-1}(2^{k-j}-1) \]

容易做到 \(O(\sum(k\log V))\)

代码

参考

posted @ 2025-08-10 07:32  Hstry  阅读(3)  评论(0)    收藏  举报