水の数列

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

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

所以我们可以考虑枚举x

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

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

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

具体来说:

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

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

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

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

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

update 2024.7.31

这道题目需要用到一段连通区间的长度,所以需要用到并查集维护

有些时候不用,可以不用并查集维护,直接用变量就好了,比如这道题目Ans && Conclusion

posted @   最爱丁珰  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示