随笔分类 - { 其他 { 莫队算法 } }
摘要:题目大概说给一个序列,多次询问区间异或和为k的连续子序列有多少个。 莫队算法,利用异或的性质,通过前缀和求区间和,先处理出序列各个前缀和,然后每次区间转移时维护i以及i-1前缀和为某数的个数并增加或减少对答案的贡献。
阅读全文
摘要:题目是区间逆序数查询。 莫队算法。。左或右区间向左或右延伸时加或减这个区间小于或大于新数的数的个数,这个个数用树状数组来统计,我用线段树超时了。询问个数和数字个数都记为n,数字范围不确定所以离散化,这样时间复杂度就是$O(n^{\frac32}\log{n})$ 1 #include<cstdio>
阅读全文
摘要:和BZOJ2038差不多。。复习一下。 1 #include<cstdio> 2 #include<cmath> 3 #include<algorithm> 4 using namespace std; 5 int block; 6 struct Query{ 7 int i,l,r; 8 bool
阅读全文
摘要:神奇的莫队算法,用来解决可离线无修改的区间查询问题: 首先对原序列进行分块,√n块每块√n个; 然后对所有查询的区间[l,r]进行排序,首先按l所在的块序号升序排序,如果一样就按r升序排序; 最后就按顺序一个一个求出各个查询的结果:知道[l,r]的答案,并且在此基础上能在比较快地在O(x)得到相邻区
阅读全文