[arc066f]Contest with Drinks Hard

题目大意:

有一些物品,每个买了有代价。 
如果存在一个极大区间[l,r]内的物品都被买了,这个区间长度为k,可以获得的收益是k*(k+1)/2。 
现在若干次询问,每次问假如修改了某个物品的价格,最大收益是多少?

题解:

一般来说这种题目可以考虑线段树分治

但是这里并不可行

另外一种解决区间限制的问题(就是一定要选某一段区间的时候)

我们会采用分治来做

其实分治的作用就在于对一段东西进行了预处理

这道题

决策单调性,两种斜率优化都是可以的

然后就是分治

我们进行到l,r时,我们确定所有左端点<=mid的k(k>mid)的最大值

显然可以后缀和维护

代码:

posted @ 2018-09-02 21:11  尹吴潇  阅读(424)  评论(0编辑  收藏  举报