4378: [POI2015]Logistyka

容易发现,一个位置对于答案的贡献最多为s,

那么序列能分的次数的就是 \lfloor\frac{\sum_{i=1}^{n} min(a[i],s)}{c}\rfloor

我第一次写用的splay,每次查询找到第一个大于等于s的位置,然后左右分别考虑。。。

然而splay常数巨大。。。就GG掉了。

发现实际上可以用两个树状数组维护一下。

离散化处理即可。(重点是还非常好写。

 

理论上splay可过。。。

splay c++代码如下:

树状数组 c++ 代码如下:

 

4 + 7 =