杂题思路 #1
2053 F - Earnest Matrix Complement
这题应该可以观察到,对于同一行,可以填充颜色的位置填上同一个颜色一定不劣。
可以先求出已知的贡献,然后对于一行,枚举上下出现的所有颜色,枚举其他颜色显然无意义,
可以设计动态规划,\(f_{i,j}\) 表示到第 \(i\) 行,填充的颜色是 \(j\) 的最大贡献,有如下状态转移方程。
这时可以发现,前面的部分相当于全局加,全局取 max,后半部分等于单点加。
可以设计神秘方法 O(1) 维护,显然也可以使用线段树。
2121 H - Ice Baby
注意到是单调不减的,考虑维护差分数组(实际上,在没有端点重合的情况下差分的值要么是 \(0\),要么是 \(1\)),考虑设计状态 \(dp_i\) 表示长度为 \(i\) 时的最小结尾。
现在考虑插入区间 [L, R],将其分为三段 \([1,L],(L,R], (R,n]\)。
-
第一段中的值不会发生变化。
-
第二段中的 \(dp_j\) 可能在 \(dp_{j-1}\) 后接一个 \([l_i,r_i]\) 中的数来变得更小。有 \(dp_j=\max(dp_{j-1},l_i)\),实际上就是一个区间平移,然后将 \(dp_{L+1}\) 变为 \(l_i\)。
-
第三段中的数,只有 \(dp_{R+1}\) 可能会变为 \(\max(dp_R,l_i)=dp_R\)。
可以 multiset 维护。
arc058_d
显然是动态规划,设计 \(f_{i,j}\) 表示匹配到第 \(i\) 个串,长度为 \(j\) 的最小字典序。
- 状态数 O(nm),存储字符串需要 O(nm2) 空间,需要优化
字典序比较的特性:一旦在某个位置出现不同字符,后续字符无法改变比较结果。
- 有效性判断:只保留有可能成为最终答案前缀的DP状态
- 单调栈维护:对于每个i,维护一个有效DP值的栈,栈顶是当前最优串
- 状态转移:只有两种选择:
- 不使用当前字符串:\(f_{i-1,j}\)
- 使用当前字符串:\(f_{i-1,j|a_i|} + a_i\)
考虑单调栈优化。
- 当前最优是候选的前缀:接受候选,更新栈
- 当前最优小于候选:丢弃候选(无希望)
- 当前最优大于候选:弹出栈中劣质解,直到找到候选的前缀
最后考虑使用 Z 函数完成字符串比较。
- 最终复杂度:O(nm + Σ|a_i|)
2147 E - Maximum OR Popcount
显然可以贪心,先暴力把不做操作的答案算出来,然后考虑贪心计算,先把低位的 \(0\) 或成 \(1\) 一定不劣,注意到先考虑高位一定不会出问题。
对于先计算低位,可能出现一个数即被贡献成了低位,但是这个低位又被贡献成了高位。
可以证明,这种情况只要存在低位跟高位都需要被贡献,就一定会发生。
先计算高位可以保证被贡献成低位的数不会被高位覆盖。
然后暴力枚举就行了。
时间复杂度 \(O(t(nV^2+q\log V))\),其中 \(V = 31\)。
【MX-S7-T2】「SMOI-R2」Speaker
考虑树链剖分,注意到答案等于 \(x\),\(y\) 路径上的一点,达到其他位置后进行演讲的最大值,加上两点间距离与两点权值。
【LGR-250】洛谷 NOIP 2025 模拟赛 T3 树上求值 tree
对于一个 \(x\) 钦定其一个祖先为 \(y\),满足 \(\operatorname{LCA*}(i,x) = y\),\(z\) 是 \(y\) 的儿子,且 \(x\) 在 \(z\) 的子树内。
那么 \(y\) 对 \(x\) 的贡献是 \(f(u+d_y) - f(v+d_z)\),其中 \(u\) 是 \(y\) 的子树内的点,\(v\) 是 \(z\) 的子树内的点。
同时这个贡献还等于 \(f(u+d_z-1)-f(v+d_z)\)。
现在问题转化成对于每一个 \(y\),求 \(f(u+d_y)\),\(f(u+d_y-1)\) 之和。
先考虑计算 \(f(u+d_u)\) 的方法。
考虑 01-Trie 维护,dfs 过程中,考虑对每个点维护一个 Trie,然后合并。
注意到 \(d_y\) 的枚举毫无前途。
考虑在 \(u\) 处插入 \(u+d_u\),而在 \(y\) 处是 \(u+d_y\),因为性质,所以向上合并时只需要全局减一即可。
考虑从低位到高位地处理 Trie。
\(f(u+d_u-1)\) 同理。

浙公网安备 33010602011771号