分块&莫队算法
文章平均质量分 78
thy_asdf
我也不知道说什么...
展开
-
bzoj3343: 教主的魔法
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3343思路:分块大法好...分块,每块内部保持有序。修改时,给完整的块打标记,两段不完整的暴力改询问时,给完整的块二分查找,两段不完整的暴力查。#include#include#include#include#includeconst int maxn=10000原创 2015-08-08 11:24:35 · 603 阅读 · 0 评论 -
bzoj4540: [Hnoi2016]序列
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4540思路:又是莫队....我们发现左右端点移动时,只会增加或删除某个点开头或结尾的区间先考虑右端点从r移动到r+1令p为[l,r]中最小值的位置那么它会对新加的区间中的p-l+1个区间产生a[p]的贡献另一些左端点在[p+1,r],右端点是r+1的区间怎么统计呢?原创 2016-04-20 20:17:33 · 1251 阅读 · 0 评论 -
bzoj4537: [Hnoi2016]最小公倍数
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4537思路:把边按a排序,每sqrt(m)分一组然后把询问按b排序,把在这组及以前的边按b排序把这些边用并查集一条一条插入并维护零散的部分暴力插入并记录,做完后暴力撤销注意:并查集不能路径压缩,否则无法撤销回去#include#include#include#in原创 2016-04-20 19:35:27 · 1554 阅读 · 0 评论 -
bzoj4542: [Hnoi2016]大数
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4542思路:当P!=2或5时,显然10^x%P!=0把后缀模P的值搞出来于是问题就便成询问区间内%P为x的分别有多少个这个再套一个莫队就可以了。#include#include#include#include#includeconst int maxn=100原创 2016-04-19 12:05:13 · 712 阅读 · 0 评论 -
bzoj2821: 作诗(Poetize)
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2821思路:分块大法好。。。分成sqrt(n)块,先预处理出连续的块的答案,f[i][j]表示第i块到第j块的答案。然后再开一个前缀和数组sum[i][j]表示前i串第j种字符出现的次数。对于一组询问[l,r],先得出连续的块的答案。对于分散的两端的块,暴力考虑每个原创 2015-08-12 10:05:20 · 818 阅读 · 0 评论 -
codechef CBAL
传送门:https://www.codechef.com/problems/CBAL思路:先求一遍出现次数前缀和,我们只管每个字母出现次数奇偶性,所以可以把状态压缩一下,离散化之后就只有最多n个状态对于子串[l,r]如果s[l-1]==s[r],那么[l,r]合法f 前i块,状态j,出现下标k次方之和,ans 块i到j的答案完整的块直接得答案,外面剩余的一个一个加进来假设现原创 2016-03-16 08:36:24 · 571 阅读 · 0 评论 -
bzoj3585: mex
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3585思路:又是一道莫队+分块。对权值分块,大于n的直接不用管。#include#include#include#include#includeconst int maxn=200010,maxb=450;using namespace std;struct原创 2015-08-12 15:35:50 · 507 阅读 · 0 评论 -
bzoj3289: Mato的文件管理
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3289思路:比较裸的莫队。交换次数显然是逆序对个数...然后考虑怎么从[l,r]的逆序对个数得到[l,r+1]的逆序对个数。先离散化,用树状数组维护权值,我们只要考虑对于新加进来的这个数,原区间中有多少个数大于它,拿区间长度去减就可以得到这个数的贡献。删除一个数类似原创 2015-08-11 10:09:10 · 1201 阅读 · 0 评论 -
bzoj3809: Gty的二逼妹子序列
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3809思路:第一反应是莫队+树状数组,复杂度O(n^1.5*logn)TLE。。。于是就有了一个想法,分块维护美丽度,再套一个莫队。这样莫队移动端点就是O(1)的,每次询问就是O(n^0.5)然后就卡过了。。。#include#include#include原创 2015-08-11 16:13:42 · 652 阅读 · 0 评论 -
bzoj3052: [wc2013]糖果公园
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3052思路:带修改的树上莫队。比不带修改的多加上一个时间维。对于时间的移动,那么就模拟一下这段时间的修改,更新答案。然后块的大小要设为n^(2/3)。至于时间复杂度的证明...取B = n ^ (2 / 3),设 nBlo为块的个数,用bloNum[v]原创 2015-08-10 17:13:40 · 536 阅读 · 0 评论 -
bzoj3757: 苹果树
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3757思路:像这种链剖 or lct没法做的就是树上莫队了...不是树上的莫队就是按询问的左端点所在的块为第一关键字,右端点为第二关键字。但是树上的就不同了,树上不是区间。于是我们就进行树分块——见bzoj1086注意这个分块是不需要保证每块的点都联通的,这个分块只原创 2015-08-10 09:12:01 · 1269 阅读 · 0 评论 -
bzoj2038: [2009国家集训队]小Z的袜子(hose)
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2038思路:首先对于一个[l,r]的询问,设col[i]表示第i种颜色在这一区间内的个数,那么随机抽到相同一对的概率就是∑C(col[i],2)/C(r-l+1,2)然后有:∑(col[i]^2-col[i])/((r-l+1)*(r-l))然后我们发现得到了[l,r]原创 2015-08-09 09:27:14 · 2139 阅读 · 0 评论 -
APIO2015&2014题解
传送门:似乎uoj都有思路:APIO2015:巴厘岛的雕塑:看到位运算,又要求结果最小,最外层肯定是个从高位到低位的按位贪心这里有两个部分分,task1:Ntask2:N先考虑task1令sum[i]表示雕塑权值的前缀和假设我们考虑到了第bit位那么我们怎么知道在前面位数满足要求的前提下,当前位能否是0DP即可设f[i][j]表示前i原创 2016-04-26 10:03:20 · 1506 阅读 · 0 评论