做题记录 25.3.9

\(\textcolor{blue}\odot\) CF2053F Earnest Matrix Complement

一定存在一种最优解,使得同一行中新填写的值相同

因此 \(dp\),令 \(f_{i,j}\) 表示第 \(i\) 行新增的数为 \(j\)\(i\) 行未确定位置间\(i\) 行未确定位置和前 \(i+1\) 行确定位置间 的最大贡献和

\(ep_i\) 表示第 \(i\) 行未确定位置数量,则边界为 \(f_{0,\ast}=0\),答案为 \(\max_j f_{n,j}\) 加上确定位置之间的总贡献,其中后者容易 \(O(nm)\) 计算,转移为

\[f_{i-1,k}+[j=k]ep_iep_{i-1}+ep_i(c_{i-1,j}+c_{i+1,j})\to f_{i,j} \]

发现可以拆分为 \(O(n)\) 次全局加,全局求 \(\max\),全局取 \(\max\)\(O(nm)\) 次单点加

维护两个标记即可

时间复杂度 \(O(nm)\)

代码

参考

\(\textcolor{blue}\odot\) CF2049E Broken Queries

若两个等长的区间询问结果不同,则说明 \(1\) 一定在其中一个内

因此查询 \([1,\frac n4]\)\([\frac n4+1,\frac n2]\),可得知 \(1\)\([1,\frac n2]\) 还是 \([\frac n2+1,n]\)

再对得到的一半进行查询,若结果为 \(0\) 则说明 \(k\le \frac n2\),否则 \(k>\frac n2\)

之后二分 \(k\) 的值,若 \(k\le \frac n2\) 则在全为 \(0\) 的一半中查询,否则令查询区间包含有 \(1\) 的一半

总查询次数为 \(2+1+\log_2 \frac n2<33\)

代码

参考

\(\textcolor{purple}\odot\) CF2048G Kevin and Matrices

题目给定的条件的 \(\le\) 可以改为 \(=\)

证明:

  • \(\min\limits_{1\le i\le n}\max\limits_{1\le j\le m}a_{i,j}=p\),则至少存在一个 \(i\) 使得 \(\max\limits_{1\le j\le m} a_{i,j}=p\)
  • 对于这个 \(i\)\(\forall 1\le j\le m,a_{i,j}\le p\),因此 \(\forall 1\le j\le m,\min\limits_{1\le i\le n}a_{i,j}\le p\),即 \(\max\limits_{1\le j\le m}\min\limits_{1\le i\le n}a_{i,j}\le p\),即 \(\min\limits_{1\le i\le n}\max\limits_{1\le j\le m}a_{i,j}\ge\max\limits_{1\le j\le m}\min\limits_{1\le i\le n}a_{i,j}\)
  • \(\min\limits_{1\le i\le n}\max\limits_{1\le j\le m}a_{i,j}\le\max\limits_{1\le j\le m}\min\limits_{1\le i\le n}a_{i,j}\),因此 \(\min\limits_{1\le i\le n}\max\limits_{1\le j\le m}a_{i,j}=\max\limits_{1\le j\le m}\min\limits_{1\le i\le n}a_{i,j}\)

枚举 \(\min\limits_{1\le i\le n}\max\limits_{1\le j\le m}a_{i,j}=\max\limits_{1\le j\le m}\min\limits_{1\le i\le n}a_{i,j}=x\),分别统计满足要求的 \(a\) 的数量

\(a_{i,j}=a_{u,v}=x\),则第 \(i,u\) 行的 \(\max\) 和 第 \(j,v\) 列的 \(\min\) 都是 \(x\),因此 \(a_{i,v}=a_{j,u}=v\),即矩阵中 \(=v\) 的部分为一个子矩阵

容斥,枚举这个子矩阵的大小为 \(i\times j\),这 \(i\) 行内的值都在 \([1,x]\) 中,贡献为 \(x^{i(m-j)}\),同理 \(j\) 列的贡献为 \((v-x+1)^{j(n-i)}\),剩余部分贡献为 \(v^{(n-i)(m-j)}\)

因此答案为

\[\begin{aligned} &\sum_{x=1}^v \sum_{i=1}^n\sum_{j=1}^m(-1)^{i+j}\binom ni\binom mjx^{i(m-j)}(v-x+1)^{j(n-i)}v^{(n-i)(m-j)}\\ =&\sum_{x=1}^v\sum_{i=1}^n(-1)^i\binom ni\sum_{j=1}^m (-1)^j\binom mj(x^i)^{m-j}((v-x+1)^{n-i})^j(v^{n-i})^{m-j}\\ =&\sum_{x=1}^v\sum_{i=1}^n(-1)^i\binom ni\sum_{j=1}^m\binom mj (-(v-x+1)^{n-i})^j (x^iv^{n-i})^{m-j}\\ =&\sum_{x=1}^v\sum_{i=1}^n(-1)^i\binom ni\left(\sum_{j=0}^m\binom mj (-(v-x+1)^{n-i})^j (x^iv^{n-i})^{m-j}-(x^iv^{n-i})^m\right)\\ =&\sum_{x=1}^v\sum_{i=1}^n(-1)^i\binom ni\left((x^iv^{n-i}-(v-x+1)^{n-i})^m-(x^iv^{n-i})^m\right)\\ \end{aligned} \]

时间复杂度 \(O(\sum nv\log nm)\)

代码

参考

\(\textcolor{blue}\odot\) CF2048F Kevin and Math Class

若对 \(b\) 建出笛卡尔树,则每次选择一个子树对应区间操作一定不劣

由于 \(b_i\ge 2\),每次选择 \([1,n]\) 即可在 \(O(\log V)\) 步内令 \(a_i=1\),因此答案上限为 \(O(\log V)\)

考虑笛卡尔树上 \(dp\)

\(dp_{i,j}\) 表示子树 \(i\) 中进行 \(j\) 次操作后 \(a\) 对应区间最大值的最小可能取值,则最终答案为 \(dp_{rt,\ast}\) 中第一个 \(=1\) 的下标

对于叶子,\(dp_{u,0}\gets a_u\)\(dp_{u,i}\gets\left\lceil\frac{dp_{u,i-1}}{b_u}\right\rceil\)

对于单个儿子的节点 \(u\),设其儿子为 \(s\),则转移为 \(dp_{u,i}\gets\max(a_u,dp_{s,i})\),然后依次令 \(dp_{u,i}\gets\left\lceil\frac{dp_{u,i-1}}{b_u}\right\rceil\)

对于两个儿子的节点 \(u\),设儿子为 \(l,r\),则转移为 \(dp_{u,i+j}\gets \max(dp_{l,i},dp_{r,j},a_u)\),然后依次令 \(dp_{u,i}\gets\left\lceil\frac{dp_{u,i-1}}{b_u}\right\rceil\)

时间复杂度 \(O(n\log^2 V)\),常数较小

代码

参考

\(\textcolor{purple}\odot\) CF2045E Narrower Passageway

根据题意,一组 \(m_1,m_2\) 的贡献 \(f(m_1,m_2)=\begin{cases}0&m_1=m_2\\\min(m_1,m_2)&m_1\ne m_2\end{cases}\)

可以拆为 \(m_1+m_2-[m_1\ge m_2]m_1-[m_2\ge m_1]m_2\)

于是转化为两个子问题,求出 \(\sum_{m_1}m_1\)\(\sum_{m_1,m_2}[m_1\ge m_2]m_1\)(剩下两个交换 \(a\)\(b\) 即可)

分别考虑每个位置的贡献

对于前者,用单调栈求出 \(L_i,R_i\),表示 \([L_i,R_i]\) 为满足 \(a_i\)\(a_{L_i\sim R_i}\) 的最大值(若有多个则取第一个,下同)的极大区间,则 \(\forall L_i\le l\le i\le r\le R_i\)\(a_i\) 可对 \([l,r]\) 产生贡献

对于后者,同样用单调栈求出 \(L_i,R_i\),表示 \([L_i,R_i]\) 为满足 \(a_i\)\(a_{L_i\sim R_i}\) 的最大值 且 \(a_i\ge\max {b_{L_i\sim R_i}}\) 的极大区间(即在前一种的基础上要求区间内的 \(b\) 都不超过 \(a_i\)),同样 \(\forall L_i\le l\le i\le r\le R_i\)\(a_i\) 可对 \([l,r]\) 产生贡献

一种方案含有连通区域 \([l,r]\;(L_i\le l\le i\le r\le R_i)\) 当且仅当区间 \([l,r]\)\(0\) 且位置 \(l-1,r+1\)\(1\),合法方案数为 \((2^{i-1}-2^{L_i-2})(2^{n-i}-2^{n-R_i-1})\)(假定 \(2^{-1}=0\)

因此总贡献为
\(\sum_{i=1}^n a_i(2^{i-1}-2^{L_i-2})(2^{n-i}-2^{n-R_i-1})\)

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

代码

参考

posted @ 2025-03-10 07:44  Hstry  阅读(6)  评论(0)    收藏  举报