数据结构-分块
Maxwei_wzj
AFO
展开
-
【CF103D】Time to Raid Cowavans-分块+离线处理
测试地址:Time to Raid Cowavans 题目大意:维护一个长为n(≤3×105)n(≤3×105)n(\le 3\times 10^5)的数列AAA,要求处理m(≤3×105)m(≤3×105)m(\le 3\times 10^5)个询问,每次询问给出一个数对(a,b)(a,b)(a,b),询问Aa+Aa+b+Aa+2b+...+Aa+kbAa+Aa+b+Aa+2b+...+Aa+...原创 2018-02-22 13:59:15 · 374 阅读 · 0 评论 -
【BZOJ3351】Regions(IOI2009)-分块+vector
测试地址:Regions 题目大意: 给定一棵nnn个点的有根树,每个点有颜色,qqq个询问,每次询问给出两个颜色a,ba,ba,b,表示询问树中有多少对点(u,v)(u,v)(u,v)使得uuu颜色是aaa,vvv颜色是bbb,且uuu是vvv的祖先。 做法: 本题需要用到分块+vector。 好题。传统数据结构貌似做不了这道题,于是想到分块。 很容易想到两种暴力: 1.将aaa相同的询问一起处...原创 2018-11-02 11:00:23 · 335 阅读 · 0 评论 -
【BZOJ4320】Homework-分块+并查集
测试地址:Homework 做法:本题需要用到分块+并查集。 看到取模,一般的数据结构肯定做不了,于是考虑对权值序列分块。 首先,当模数不超过n−−√n\sqrt n(nnn为最大数)时,我们显然可以开n−−√n\sqrt n个桶,每次插入暴力更新这些桶,这样答案就可以每次O(1)O(1)O(1)地求出了。 然后,当模数超过n−−√n\sqrt n时,它在nnn之内的倍数不超过n−−√n\...原创 2018-09-13 11:15:38 · 333 阅读 · 0 评论 -
【BZOJ2741】L-分块+可持久化trie
测试地址:L 做法:本题需要用到分块+可持久化trie。 我们知道,一个连续异或和实际上就等于两个前缀异或和的异或,因此我们求出前缀异或和,转换成一个新的问题:求区间内两个数异或的最大值。这个东西直接用数据结构做不好做,而且又强制在线不能用莫队,因此考虑相似的分块。 首先对序列分块,然后对于每一块,令mx(i,j)mx(i,j)mx(i,j)表示第i+1i+1i+1块左端点到点jjj区间中最...原创 2018-09-12 16:21:16 · 284 阅读 · 0 评论 -
【CF966E】May Holidays-分块+虚树
测试地址:May Holidays 题目大意:一个nnn个人的公司,除了111号外每个人都有一个直属上司,uuu为vvv的下属当且仅当uuu的直属上司是vvv或uuu的直属上司是vvv的下属。每个人都有一个承受阈值titit_i,当一个人的下属中有严格大于titit_i个人休假而他没有休假时,他就会不开心。mmm次操作(改动一个人的休假状态),求每次操作后不开心的人数。 做法:本题需要用到分块...原创 2018-08-22 19:57:35 · 465 阅读 · 0 评论 -
【HDU4787】GRE Words Revenge-AC自动机+分块
测试地址:GRE Words Revenge 题目大意:维护以下操作:1.在词典中加入一个单词。2.询问一个字符串SSS中有多少个子串是词典中的单词。强制在线。 做法:本题需要用到AC自动机+分块。 如果离线,我们可以直接把所有涉及的单词先加入到trie中,然后建AC自动机,在运行的时候打标记和匹配即可。 但这里强制在线,我们知道AC自动机本身是不能支持在线插入操作的,所以每次插入后我们需...原创 2018-08-08 11:49:43 · 278 阅读 · 0 评论 -
【BZOJ4070】雅加达的摩天楼(APIO2015)-分块+最短路
测试地址:雅加达的摩天楼 题目大意:NNN个点排成一排,有MMM只狗,每只狗有一个跳跃能力PPP,初始它在点BBB,这只狗每步可以往左或往右跳PPP个点。现在要从000号狗传信息到111号狗,一只狗可以传信息给同个点的其他狗,问最少跳几步。 做法:本题需要用到分块+最短路。 看到这题,第一个想法就是,从每只狗所在的点BBB向所有点B+xPB+xPB+xP连边权为|x||x||x|的边,然后跑...原创 2018-06-12 16:31:38 · 345 阅读 · 0 评论 -
【BZOJ4815】小Q的表格(CQOI2017)-数论+分块
测试地址:小Q的表格 做法:本题需要用到数论+分块。 这道题可真是个神题……之所以标题笼统地写了数论,是因为它用到的知识实在是有点多……这里给大家,也算给自己理一遍思路,以免忘了。 首先分析题目所给二元函数的条件: f(a,b)=f(b,a)f(a,b)=f(b,a)f(a,b)=f(b,a) b⋅f(a,a+b)=(a+b)⋅f(a,b)b⋅f(a,a+b)=(a+b)⋅f(a,b)b...原创 2018-05-25 11:22:47 · 292 阅读 · 0 评论 -
【BZOJ4537】最小公倍数(HNOI2016)-分块+并查集启发式合并
测试地址:最小公倍数 做法:本题需要用到分块+并查集启发式合并。 脱去题目各种疑似数论的包装之后,我们发现实际上题目让你求的是:存不存在一条路径,使得路径上最大的aaa和最大的bbb分别为询问的AAA和BBB。显然如果只有一个询问的话,我们就把a≤Aa≤Aa\le A并且b≤Bb≤Bb\le B的边连起来,再用并查集维护联通块内最大的aaa和最大的bbb,如果询问的两个点连通并且最大的aaa和...原创 2018-05-02 17:55:43 · 259 阅读 · 0 评论 -
【BZOJ1086】王室联邦(SCOI2005)-树分块
测试地址:王室联邦 做法:本题需要用到树分块。 这题是树分块的模板,我们来看一下该怎么分。 DFS整棵树,维护一个栈,当遍历完一个点时将这个点加入栈中。对于一个点,每遍历完它的一棵子树,检查栈内元素是否达到BBB个,如果达到就把这些元素分成一个块(本题中是一个省),块的根设为当前点(本题中为省会)。 但是,如果在一棵子树中还有剩余的点,而这些剩余的点数和另一棵子树中底部的点加起来达到BBB...原创 2018-02-24 22:56:43 · 210 阅读 · 0 评论 -
【BZOJ3744】Gty的妹子序列-序列分块+树状数组
测试地址:Gty的妹子序列 做法:本题需要用到序列分块+树状数组。 求区间逆序对数,我们知道可以用莫队算法+树状数组来做离线做法,但是这题强制在线,我们应该怎么办呢? 还是考虑分块,将序列分成n−−√n\sqrt n块,每块有n−−√n\sqrt n个元素。我们需要尽可能快的处理出尽可能多的区间内的逆序对数,这样可以有助于我们进行下一步操作。令num(l,r)num(l,r)num(l,r)...原创 2018-03-02 12:53:39 · 547 阅读 · 0 评论