做题记录 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)\) 计算,转移为
发现可以拆分为 \(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)}\)
因此答案为
时间复杂度 \(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)\)

浙公网安备 33010602011771号