这题目没有修改,所以可以考虑预处理
显然\(x\)从大到小或者从小到大,被选中的数字是单调的(尽管区间变化个数没有单调性)
所以我们可以考虑枚举\(x\)
我最开始想的是从大到小枚举\(x\),但是维护有一点复杂,因为是删除
这个时候就要想到既然能够从大到小枚举\(x\),那肯定也可以从小到大枚举\(x\)
然后我们要动态维护序列上的连通区间,就转换成了我们熟悉的模型,用并查集
具体来说:
他这里是让\(f_i\)的初值为\(0\),实际上我们的套路做法\(f_i=i\),只要稍微改动即可
当然维护方法也不止这一种,可以想想其他的
然后还要注意这题目卡空间,所以不是开一个结构体类型的st表,而是一个int类型的st表来存储下标(而不是具体的值)
int st[N][20]; //卡空间技巧:st表存最值对应的下标
洛谷题解还有用分块+st表的,也可以考虑一下