Codeforces Round 893 (Div. 2)
一言:
从你站在桥上看我的那一刻起你就是我的世界
——火影忍者
不是很满意,还是没有突破
首先不难想到一种思路,就是枚举
显而易见的,
定义
显然,对于
定义
显然对于上述数组,我们可以通过枚举任意一个子区间
所以有
但是还有一个问题,这样求出的
另外,也要处理好一些边界值的细节。以及不能
看完题解之后,感觉这个题是真的妙啊。
由于这道题是
首先,为了让题目更加简单,我们可以直接不考虑这个删除操作。
那么显然由于是要求不同的数字,所以实际上只有每个数出现的第一个位置是有意义的,那么我们可以考虑维护一个
具体来说,对于插入操作,将这个数放入
重点是这个删除操作,实际上我们可以直接令
至于插入操作的撤销,这个还是很简单的,就不细说了。
实际上在代码实现的时候,是还可以更简单的。
-
当求两个独立的区间的贡献时,可以考虑枚举两个区间的相对方位,然后通过一些预处理进行维护。
-
如果既有删除操作,有些时侯又要撤销这个删除操作,那么可以考虑在删除的时候只将数组的最后一位向前挪,并不改变实际的值。
-
维护一个序列有多少个不同的数时,可以只将每个数第一次出现的位置设为贡献
,其余位置都不存在贡献。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】