CF505E Mr. Kitayuta vs. Bamboos(二分,堆,*)
CF505E Mr. Kitayuta vs. Bamboos
\(n\) 序列 \(h\)。\(m\) 轮每轮可以挑选可重复的 \(k\) 个下标 \(i\) 执行 \(h_i \leftarrow \max(0, h_i - p)\)。每轮结束后 \(h_i \leftarrow h_i + a_i\)。求最后 \(h_i\) 最大值的最小值。
可以把 \(h_i - p < 0\) 的情况看作是原来的 \(h_i = p\)。
于是问题转化为一开始竹子高度 \(H_i \ge h_i\),高度不能减到 \(< 0\)。
二分答案 \(X\)。转化为所有竹子初始高度 \(H_i = X\),每轮开始先 \(H_i \leftarrow H_i - a_i\),然后每轮可以选 \(k\) 个竹子 \(H_i \leftarrow H_i + p\),中途 \(H_i\) 不能 \(< 0\),最后 \(H_i \ge h_i\)。
于是可以从最后一轮到第一轮,用一个堆贪心,堆内的竹子是最后还不能 \(\ge h_i\) 的,然后堆内按紧急性 \(\lfloor \frac {H_i}{a_i}\rfloor\) 排序。每次取堆顶判是否来得及阻止 \(< 0\) 然后 \(+ p\) 最后就判堆是否空即可。

浙公网安备 33010602011771号