[arc066f]Contest with Drinks Hard
题目大意:
有一些物品,每个买了有代价。
如果存在一个极大区间[l,r]内的物品都被买了,这个区间长度为k,可以获得的收益是k*(k+1)/2。
现在若干次询问,每次问假如修改了某个物品的价格,最大收益是多少?
题解:
一般来说这种题目可以考虑线段树分治
但是这里并不可行
另外一种解决区间限制的问题(就是一定要选某一段区间的时候)
我们会采用分治来做
其实分治的作用就在于对一段东西进行了预处理
这道题
决策单调性,两种斜率优化都是可以的
然后就是分治
我们进行到l,r时,我们确定所有左端点<=mid的k(k>mid)的最大值
显然可以后缀和维护
代码: