[线段树优化dp] P12196 [NOISG 2025 Prelim] Lasers 2
posted on 2025-04-20 13:59:33 | under | source
题意:\(n\times m\) 的网格,第 \(i\) 行有一个方块 \([l_i,r_i]\),花 \(c_i\) 解锁后可以任意滑动。至多花费 \(k\) 则最多有多少列满足不存在任何木块?\(n,m\le 2\times 10^3\)。
枚举最终局面,有若干极大被覆盖区间。显然解锁的木块应叠在一起,只考虑最大者即可。对它分讨:
- 若全局最大值未解锁:一定合法。记 \(val_{i,j}\) 为 \([i,j]\) 子区间的花费和,\(f_{i,j}\) 为考虑 \([1,i]\) 有 \(j\) 个空隙的最大花费,转移枚举当前区间,只需保证全局最大值被包含即可。
- 若全局最大值被解锁:合法当且仅当存在覆盖段长度大于全局最大值,再设一维即可。强制被解锁只需把它删去即可。
容易线段树优化为 \(O(n^2\log n)\)。

浙公网安备 33010602011771号