分块,莫队
yzyyylx
这个作者很懒,什么都没留下…
展开
-
HDU - 4467 Graph
题面题意给出一张无向图,每个点有一个颜色(0或者1),每条边有一个权值,要求支持两种两种操作: 1.改变某个点的颜色 2.询问边的两端为某两种颜色的边权之和(一共只有三种询问,(0,0),(0,1),(1,1))。做法这题看上去无从下手,但是上做法十分暴力,首先预处理出每种询问的答案,每次操作只要对其修改即可。 将点按其度数大小将其分为两类: 1.度数大于sqrt(...原创 2018-07-18 19:31:41 · 316 阅读 · 0 评论 -
codeforces1129D Isolation
题面题意给出一个长度为n的序列,将它划分成一个或多个子串,使每个串中只出现过一次的数字个数小于等于m,求方案个数。做法记dp[i]表示前i个的答案,f(i)f(i)f(i)表示iii到nnn(nnn表示此时的右端点)的只出现一次的数字个数,则dp[n]=∑f(i)<=mdp[i−1]dp[n]=\sum_{f(i)<=m}dp[i-1]dp[n]=∑f(i)&...原创 2019-02-25 19:28:21 · 287 阅读 · 0 评论 -
codeforces633H Fibonacci-ish II
题面题意给出n个数,每次询问给出l,r,询问把[l,r][l,r][l,r]这段数排序去重后,求第i个数乘上斐波那契数列的第i项的和。做法这题需要一个公式Fi−1∗Fk+Fi∗Fk+1=Fk+iF_{i-1}*F_k+F_i*F_{k+1}=F_{k+i}Fi−1∗Fk+Fi∗Fk+1=Fk+i发现利用这个公式,可以推得∑i=1nnumi∗Fi+t−1∗Fk+∑i=1nnum...原创 2019-02-27 15:45:44 · 172 阅读 · 0 评论 -
codeforces1098D Eels
题面题意在鱼缸中有一些鱼,这些鱼之间会相互吞噬直到只剩下一条鱼,若一条鱼的质量为a,另一条鱼的质量为b,则吞噬之后会剩下一条质量为a+b的鱼,若a&lt;=ba&lt;=ba<=b且b&lt;=2∗ab&lt;=2*ab<=2∗a,则这次吞噬是危险的。现在有一个空鱼缸,进行多次操作,每次操作会加入一条鱼或去掉某一条鱼,问这次操作后,鱼缸中的鱼相互吞...原创 2019-02-22 16:24:04 · 261 阅读 · 0 评论 -
The 2017 ACM-ICPC Asia Beijing Regional Contest C - Graph
题面题意给出一张图,每次询问给出l,r,定义序号在l,r之间的点为安全的,求只经过安全点就可以互相到达的点对数。做法首先题目不难转化为求所有联通块的贡献和,每个联通块的贡献为(s−1)∗s/2(s-1)*s/2(s−1)∗s/2,s表示该联通块的大小。因为是联通块,所以我们考虑有哪些边在块内,然后每条边记录两条(u-&gt;v,v-&gt;u),根据左端点排序,这样序号在一段区间内的点所...原创 2018-10-31 15:00:35 · 363 阅读 · 0 评论 -
loj #2322. 「清华集训 2017」Hello world!
题面题意给出一棵树,要求支持两种操作: 1.给出u,v,从u开始每次向v条k条边(如果到v的距离小于k则直接到达v),对所有经过的点的权值开根。 2.给出u,v,从u开始每次向v条k条边(如果到v的距离小于k则直接到达v),求所有经过的点的权值和。做法根据每次跳的长度k进行分块,令块大小为S。 然后对于1~S中的每一个数i建一个森林,每个点的父亲是这个点在原树上与它深...原创 2018-09-02 11:35:33 · 652 阅读 · 1 评论 -
HDU 4787 GRE Words Revenge
题面题意有2种操作: 1.学习一个字符串(已学过则不算) 2.查询某个字符串中有几个学过了。 强制在线做法如果不用在线,则离线建AC自动机,轻松解决。 但是,题目要求强制在线,可以发现,随着新串的加入,AC自动机上节点的fail指针也会随之改变,因此AC自动机必须重构,但若直接重构必然会T。 因此,可以考虑分块的思想,建两个AC自动机a,b,每次将字符串加入到b中,加...原创 2018-07-25 20:17:25 · 301 阅读 · 0 评论 -
CodeChef - GERALD3 Chef and Substrings
题面题意给出一个字符串,每次询问左端点在l,r区间内的字符串一共有几种。做法莫队,那么只要考虑在已知道答案的L-R区间内加入一个或删除一个点的贡献即可。 难点在于去重,如果不考虑重复,那么某个点的贡献就是Len-pos+1.现在考虑重复,可以发现一个点为左端点的字符串就是以它为首的后缀的所有前缀,那么只要求出它与L-R内所有点为首的后缀的LCP的最大值即可。 这里就要用...原创 2018-07-19 09:31:57 · 377 阅读 · 0 评论 -
CodeForces - 785E Anton and Permutation
题面题意有一个1-n的排列,初始为1,2,3……n,每次交换其中两个数,并且询问此时逆序对的个数。做法某次重新计算逆序对的个数显然会T,因此肯定是要每次计算交换之后对答案产生的影响。 经过观察,交换p,q两位置的数,对答案的影响仅对数字大小在num[p],num[q]之间的数的个数有关。 因此可以考虑分块,对于交换同一块里的两个数时,暴力修改即可。 若在不同的块内,则...原创 2018-07-18 20:00:03 · 242 阅读 · 0 评论 -
CodeForces - 13E Holes
题面题意一条直线上有n个洞,每当一个球进入一个洞时,会被弹到后面距离它li的洞中或者直接被弹飞,要求支持两种操作: 1.修改某个洞的弹力 2.询问小球放入某个洞后,被弹几次之后会飞出,飞出之前进入的最后一个洞是什么。做法这题可以用LCT,但是码量大而且难写,虽然速度快一点。 最好还是用分块来写,对于每一个块维护其中每个洞弹出这个块要几次,会被弹到哪个洞,或者飞出。 ...原创 2018-07-18 19:41:12 · 313 阅读 · 0 评论 -
洛谷 P4595 [COCI2011-2012#5] POPLOCAVANJE
题面题意给出一个字符串S(长度不超过300000)和至多5000个串,用这至多5000个串去覆盖S,每个串允许用多次,且允许串重叠,则S中至少有几个字符不被覆盖。空间限制为64MB做法这题可以用后缀自动机和AC自动机都可以直接做,但是因为空间限制,都不能直接建。但是注意到这5000个字符串相互独立,所以可以进行分块,对约根号个串建出AC自动机后,计算贡献,然后每次再清空重建即可代码...原创 2019-03-13 21:52:57 · 203 阅读 · 0 评论