水の数列

发布时间 2023-12-12 10:02:58作者: 最爱丁珰

这题目没有修改,所以可以考虑预处理

显然\(x\)从大到小或者从小到大,被选中的数字是单调的(尽管区间变化个数没有单调性)

所以我们可以考虑枚举\(x\)

我最开始想的是从大到小枚举\(x\),但是维护有一点复杂,因为是删除

这个时候就要想到既然能够从大到小枚举\(x\),那肯定也可以从小到大枚举\(x\)

然后我们要动态维护序列上的连通区间,就转换成了我们熟悉的模型,用并查集

具体来说:

他这里是让\(f_i\)的初值为\(0\),实际上我们的套路做法\(f_i=i\),只要稍微改动即可

当然维护方法也不止这一种,可以想想其他的

然后还要注意这题目卡空间,所以不是开一个结构体类型的st表,而是一个int类型的st表来存储下标(而不是具体的值)

int st[N][20]; //卡空间技巧:st表存最值对应的下标

洛谷题解还有用分块+st表的,也可以考虑一下