考察set的灵活使用。本题要求输出原序列严格递减子序列的长度,set存每一段相同的子串的头下标。在询问时,首先明白每次操作最多能使答案+1,产生的原因是a[k]-d使得原本大于之前的a[k]现在小于前面那一段了,因此k可以插入到set里面。同时a[k] - d也使得当前的a[k]可能会把之后原本小于a[k]的现在大于a[k] - d了,a[k]会抹平这些元素,因此遍历删除即可。
#include
#include
#include
#include
#include
#include
下面再提供一下此题的线段树做法
线段树进行区间合并即可,需要考虑许多细节,请参考《楼房重建》
#include
#include
#include
#include
#include
#include