首先将所有的牌子放倒,那么花费就是牌子L和牌子R之间的空隙长度。
有一种特殊情况,存在牌子P(p < L)特别长,以至于影响了L,R之间的空隙长度。
所以我只想到了一种离线算法。
cov[i] 记录覆盖牌子i的编号。
dis[i] 记录推到牌子i所能到达的最远距离。
cost[i]记录L= i,R = n 时的最小花费。
首先预处理出dis[i],cost[i]。
然后将询问按L排序,然后从右到左枚举牌子。
枚举时不断更新cov[i],然后分类讨论得到答案。
弱用了三棵线段树才水过去,应该存在更简洁的方法。
#include
#include
#include
#include
#include
#include
#include
#include
#include