摘要: CF1000F One Occurrence 给定一个序列,询问区间内出现次数为 1 的数,输出任意一个。 很容易想到莫队,然后可以用一个 \(unordered_set\) 来维护,但是跑不过,于是我们可以考虑用一个栈来维护,也就是可以直接放到栈里,然后添加直接加,删除的话我们每次进去的时候会记录 阅读全文
posted @ 2021-04-20 23:39 __Anchor 阅读(39) 评论(0) 推荐(0) 编辑
摘要: CF351D Jeff and Removing Periods 首先需要想到的是一个结论: 对于一个区间,如果其存在某一个值的位置集合构成等差数列,那么这个区间的答案就是区间颜色个数,如果不存在(也就是说所有值的位置集合都不能构成等差数列),那么这个区间的答案就是区间颜色个数+1,原因显然。 正确 阅读全文
posted @ 2021-04-20 23:28 __Anchor 阅读(35) 评论(0) 推荐(0) 编辑
摘要: CF220B Little Elephant and Array 像这样对于出现次数有限定的计数,并且可以离线的问题,我们可以考虑莫队来做。 那么其实这道题想到莫队就很显然了,相当于每次我们直接看一下当前桶是不是等于其本身即可。 代码: #pragma GCC optimize("Ofast") # 阅读全文
posted @ 2021-04-20 22:54 __Anchor 阅读(31) 评论(0) 推荐(0) 编辑
摘要: CF877F Ann and Books 给定一个 01 序列,每次询问一个区间有多少个子区间其 1 的个数比 0 正好多 k 个,k 最初给定。 我们可以做一遍前缀和,询问就相当于是在问两个前缀和的差等于 k 的有序对个数。 于是我们每次单点修改的时候询问一下当前值 \(sum+k\) 或者 \( 阅读全文
posted @ 2021-04-20 22:51 __Anchor 阅读(41) 评论(0) 推荐(0) 编辑
摘要: CF86D Powerful array 数据范围 2e5 ,可以带根号的算法,同时没有要求强制在线,于是可以考虑莫队。 我们把每次单点变化的贡献写出来就可以直接维护了。 代码: #include<bits/stdc++.h> using namespace std; template <typen 阅读全文
posted @ 2021-04-20 22:45 __Anchor 阅读(37) 评论(0) 推荐(0) 编辑
摘要: P3067 [USACO12OPEN]Balanced Cow Subsets G 折半搜索。 发现数据范围很小,但是直接搜索不现实,于是考虑折半搜索。 折半搜索本质就是只搜一半然后把两个答案拼起来。 这里注意要二进制压缩状态来判断重复。 代码: #include<bits/stdc++.h> us 阅读全文
posted @ 2021-04-20 22:41 __Anchor 阅读(78) 评论(0) 推荐(0) 编辑