连环病原体,洛谷P4230,LCT+二维前缀和
正题
可以发现对于每一个l,找到最小的r,使[l,r]为一个加强区间,那么r是关于l单调不降的.
证明显然.那么我们就可以用LCT来two-pointers.
得到一个区间,考虑会对什么位置的ans产生贡献,发现可以对[l,r]中的ans贡献m-r+1,对[r+1,m]中的ans贡献一个首项为m-r,公差为-1的一个等差数列,如何区间加等差数列,二维前缀和即可,具体来说就是差分两次,转化为给4个位置加一个权值.
#include<bits/stdc++.h...
原创
2020-09-01 21:53:31 ·
136 阅读 ·
0 评论