莫队算法
_beginend
这个作者很懒,什么都没留下…
展开
-
【洛谷P6072 [MdOI2020] Path】【回滚莫队+Trie】
题意给一棵nnn个节点的树,边有边权。定义一条路径的权值为边权的异或和。找两条节点不相交的路径,使得这两条路径的权值和最大。n≤30000n\le 30000n≤30000分析问题可以转化成对于每个点,求在该点的子树内和子树外分别找两个数,使得它们的异或的和尽可能大。求出dfs序并倍增,就可以转化成在区间中选两个数,使得这两个数的异或和尽可能大。用回滚莫队+Trie就好了。回滚莫队具...原创 2020-02-10 11:09:15 · 223 阅读 · 0 评论 -
bzoj 4129: Haruna’s Breakfast 树上带修改莫队+分块
题意有一棵树,每个节点有点权,要求资瓷单点修改和查询一条链上的mex。 n,m<=50000分析一开始想到了树上带修改莫队+分块,但是觉得应该还有更简单的办法,结果发现就是这样。。。 权当是复习树上莫队和带修改莫队吧。 树上莫队就是把这棵树的括号序(注意不是欧拉序)求出来然后就变成序列莫队了。 带修改的话就是加多一维表示修改到哪里。 其他的就是裸的求mex了。 没想到打的这么顺手。。。一原创 2017-05-26 20:52:18 · 395 阅读 · 0 评论 -
bzoj 4866: [Ynoi2017]由乃的商场之旅 莫队算法
题意给出一个长度为n的由小写字母组成的字符串,每次询问一个区间内有多少连续子串重新排列后可以得到一个回文串。 n,q<=60000分析恩我们考虑给每种颜色一个权值,那么一个连续子串可以组成回文串当且仅当其异或值为0或为某种颜色的权值。 知道这点我们就很好做了。 考虑用莫队。 维护一个桶,表示所有后缀的异或值。再设置一个总体异或值,表示桶内的元素都要异或上这个值,然后就可以O(26)O(26)原创 2017-04-26 19:40:33 · 905 阅读 · 0 评论 -
51nod 1203 JZPLCM 莫队算法
题意长度为N的正整数序列S,有Q次询问,每次询问一段区间内所有数的lcm(即最小公倍数)。由于答案可能很大,输出答案Mod 10^9 + 7。 例如:2 3 4 5,询问[1,3]区间的最小公倍数为2 3 4的最小公倍数 = 12。 N,Q<=50000,S[i]<=50000分析在做这题的时候我没有分析到一条很重要的性质,就是说所有大于sqrt(n)的素数在答案中的指数不会大于1。那么我们可以原创 2017-08-20 14:33:30 · 318 阅读 · 0 评论 -
51nod 1592 数列积 莫队算法+树状数组
题意小明有一个含有n个数的数列 a1,a2,…,an 。 他定义一个数列的积为∑ni=1∑nj=i|ai−aj∗(j−i)\sum_{i=1}^n\sum_{j=i}^n|a_i-a_j*(j-i) 他发现算出数列积实际上非常简单。因此他现在有了一个绝妙的主意。 他有Q个询问。 对于每个询问会给定两个参数 l,r 。 他想知道的是,将 al,al+1,…,ar 拿出来成为一个数列,问该数列原创 2017-10-29 21:04:17 · 446 阅读 · 0 评论 -
bzoj 5016: [Snoi2017]一个简单的询问 莫队算法+分块
题意给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次。 N,Q≤50000分析我们要求的实际上就是区间[l1,r1]中的每个数在区间[l2,r2]中出现次数的和。 考虑按位置分块,预处理f[i,j]表示第i块中的每个数在[1,j]中出现次数的和。 询问的时候,整块的...原创 2018-03-26 15:56:18 · 285 阅读 · 0 评论 -
Codeforces 700D Huffman Coding on Segment 莫队算法+哈夫曼树
题意给一个长度为n的序列,每次询问把一个区间内的数转换成哈夫曼编码需要的最小长度。哈夫曼编码就是把每个字符映射到一个01串,要求对于两个不同的字符,其中一个的编码不能是另一个的前缀。 n,ai,q≤100000n,ai,q≤100000n,a_i,q\le100000分析显然我们可以把每个字符出现的次数看作是权值,然后建一棵哈夫曼树的代价即为答案。 用莫队维护每个数的出现次数,...原创 2018-06-23 11:21:57 · 348 阅读 · 0 评论 -
bzoj 4939: [Ynoi2016]掉进兔子洞 莫队算法+bitset
题意有 m 个询问,每次询问三个区间,把三个区间中同时出现的数一个一个删掉,问最后三个区间剩下的数的个数和,询问独立。注意这里删掉指的是一个一个删,不是把等于这个值的数直接删完,比如三个区间是 [1,2,2,3,3,3,3] , [1,2,2,3,3,3,3] 与 [1,1,2,3,3],就一起扔掉了 1 个 1,1 个 2,2 个 3。 n , m <= 100000 , 1 &...原创 2018-08-26 10:41:55 · 391 阅读 · 1 评论 -
bzoj 4810: [Ynoi2017]由乃的玉米田 莫队算法+bitset
题意给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1,2,3选出的这两个数可以是同一个位置的数 定义c为每次的x和ai中的最大值,ai >= 0,每次的x>=2,n,m,c <= 100000分析考虑莫队,维护一个桶和两个bitset,一个原创 2017-04-12 13:31:34 · 368 阅读 · 0 评论 -
bzoj 4542: [Hnoi2016]大数 莫队算法
题意有一个很大的数 S,长度达到了 N 位;这个数可以看成是一个串,它可能有前导 0,例如00009312345 。有一个素数P。现在,提出了 M 个询问,每个询问求 S 的一个子串中有多少子串是 P 的倍数(0 也 是P 的倍数)。例如 S为0077时,其子串 007有6个子串:0,0,7,00,07,007;显然0077的子串007有6个子串都是素数7的倍数。 N,M<=100000,P为原创 2017-03-13 19:28:12 · 373 阅读 · 0 评论 -
bzoj 2120: 数颜色 带修改莫队算法
题意:有n个位置(n<=10000),初始每个位置有一种颜色,要求资磁两个操作: R x y 把位置x的颜色变为y Q x y 求x到y这个区间内出现了多少种不同的颜色分析:让我们来介绍一下带修改莫队,其实就是三维莫队。 每个询问本来只有二元组(l,r)表示,现在我用一个三元组(l,r,x)表示,意思是对[l,r]进行询问,x表示在此次询问操作之前经过了x次修改操作。 然后和普通莫队一样,第原创 2016-08-18 15:49:38 · 827 阅读 · 0 评论 -
bzoj 3781: 小B的询问 莫队算法+分块
题意有一个序列,包含N个1~K之间的整数。一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数。 n,m,k<=50000分析莫队算法好劲啊!!! 按所在块为第一关键字,右端点为第二关键字对询问排序,然后就可以直接上莫队啦。代码#include<iostream>#include<cstdio>原创 2016-11-09 10:55:55 · 389 阅读 · 0 评论 -
bzoj 3809: Gty的二逼妹子序列 分块+莫队算法
题意给出n个数m次询问,每次询问[a,b]之间的颜色在区间[l,r]之间出现了多少种。 n<=100000,m<=1000000分析看到28M的内存整个人都不好了啊。 树套树什么的就别想了~~ 这题很容易想到莫队+树状数组,那样的话复杂度是O(nn√logn)O(n\sqrt nlogn) 还有一种离奇的分块做法,就是对权值分块,那么修改就是O(1)O(1),查询就是O(nn√)O(n\sq原创 2016-11-17 15:06:25 · 327 阅读 · 0 评论 -
bzoj 4540: [Hnoi2016]序列 莫队算法+rmq
题意给出一个长度为n的序列和q个询问,没个询问l r表示求[l,r]中每一个子序列的最小值的和。 n,q<=100000分析正解是非常玄学的线段树,反正我是不会了,不过据说跑的还没有莫队快……首先很容易想到离线做,但是莫队要怎么更新呢?总不能O(n)扫一遍吧。 我们假设现在莫队处理到的区间为[l,r],那么我要将其变为[l,r-1],那么就是要减去所有区间[i,r](l< =i<=r)的最小值。原创 2016-12-05 21:46:27 · 416 阅读 · 0 评论 -
bzoj 3236: [Ahoi2013]作业 莫队算法+分块
题意给出一个长度为n的序列,元素范围为[1,n]。给出求个询问,格式为l r a b,表示询问[l,r]中在[a,b]范围内的数有多少个和在[a,b]范围内的数有多少种。 n<=100000 m<=1000000分析搞不懂那些莫队+树状数组是怎么卡过的,复杂度明明已经炸掉不知道多少了……其实只要对权值分块即可做到O(1)O(1)修改,O(n√)O(\sqrt n)询问,那么总时间复杂度就是O(nn原创 2016-11-24 21:03:32 · 717 阅读 · 0 评论