任意连续 k 托负荷之和都不能超过 S。从左到右扫描,维护当前长度为至多 k 的窗口。
一旦窗口和超过 S,为了不影响更左边已经处理过的窗口,应当优先削减窗口最右端的货品:每次把右端负荷减少 min(右端当前负荷, 超出量),直到窗口和不超过 S。负荷减到 0 的托可以从窗口中弹出。
该贪心保证每个窗口在第一次被检查时就变成合法,且削减量全局最少。
冷链中转站的一条传送线上依次放着 n 托货品,第 i 托的制冷负荷为 ai。安全规程要求:任意连续 k 托的负荷之和都不能超过上限 S。每次调整可以选择一托,把它的负荷减少 1,但负荷不能变成负数。站长希望用尽可能少的调整次数,使整条传送线满足限载规程。
约束:1≤k≤n≤200000,1≤S≤10000000000000,0≤ai≤1000000000。
第一行三个整数 n、k 和 S,分别表示托数、窗口长度与负荷上限。 第二行 n 个整数 a1,a2,…,an,表示各托制冷负荷。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.