分块
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
CF1375H Set Merging
这篇题解写的真是太好辣!虽然实际上是我自己脑补的看题解之前先看清楚题意。。原序列是个排列,不是有序的,要把 [l,r][l,r][l,r] 位置的集合合并出来,合并要保证值域有序。对值域分块,然后将每一块中位置在 [l,r][l,r][l,r] 的段提取出来,依次合并。这一步合并次数是 nqB\frac {nq}BBnq 的。然后考虑怎么把值域块内的每个位置连续段合并出来,因为位置连续段的值域并不一定连续,再次对值域分治,先合并出值域在 [L,M],[M+1,R][L,M],[M+1,R][L,M原创 2020-07-20 17:38:54 · 189 阅读 · 0 评论 -
LOJ#2461. 「2018 集训队互测 Day 1」完美的队列【分块+two-pointer求最晚删除时间】
题目描述:题目分析:只需要对每次操作计算出这次操作push的元素什么时候全部被pop掉,然后按时间扫一遍用一个桶就可以统计答案。考虑把每次操作插入的元素分块,分别求出每个整块和散块全部被pop掉的时间取max。先考虑每个操作的整块操作什么时候被pop:枚举一个整块kkk,记它的左右端点为[L,R][L,R][L,R],那么对于l≤L,R≤rl\le L,R\le rl≤L,R≤r的操...原创 2020-05-03 20:03:24 · 238 阅读 · 0 评论 -
20200417【网格路径异或最大值,树上x到一段编号区间的最短距离,多个区间的不同权值种数】
T1:签到因为题解说的实在太好了所以就直接粘贴了。在取奇/偶数个数使得异或和最大,给所有权值加上一个2N2^N2N后加入线性基,如果需要取奇数个数就带入0,取偶数个数就带入2N2^N2N到线性基中查询最大异或和就可以了。T2:树一段连续的编号不好用数据结构维护距离,但是用一次dfs/bfs可以很方便地求出每个点到一段连续编号的最近距离。O((n+m)log2)O((n+m...原创 2020-04-18 11:38:17 · 274 阅读 · 0 评论 -
分块、莫队算法
首先,是利用分块的思想处理区间问题比如这个:(D-query)点击打开链接Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query is a pair (i, j) (1 ≤ i ≤ j ≤ n). For each d-query (i, j), you have to ret原创 2017-12-23 22:35:53 · 802 阅读 · 0 评论 -
BZOJ 3744: Gty的妹子序列 【分块求区间逆序对】
题目分析:nn lognn\sqrt n~lognnn logn的分块(+树状数组预处理)+ 主席树维护区间值求散块nnlognn\sqrt {nlogn}nnlogn的分块+树状数组处理前i块小于j(及大于j)的数有多少个,相当于用分块代替了主席树。nnn\sqrt nnn的分块,其实可以使上面的方法最后处理散块的时候用散块之间桶排归并,散块自身预处理前缀和/后缀...原创 2019-03-20 10:43:32 · 455 阅读 · 0 评论 -
BZOJ 3217: ALOEXT 【块状链表套trie树】
题目分析:由于这位dalao实在讲的太好了,所以我就直接引用了。。由于此题需要强制在线的删除或者插入,所以我们基于块状链表分块,在每个块内存储指定区间内的所有数,以及该区间内的最大值和次大值,同时再维护一个由该区间内所有数组成的trie树。对于修改一个数,首先在该块的trie数中删除该数(直接伪删(减cnt)),然后再插入,接着更新最大值和次大值。对于插入一个数,直接在trie树...原创 2019-03-21 17:14:15 · 218 阅读 · 0 评论 -
Codeforces1129D. Isolation【分块优化DP】
题目描述:给出长度为n(1≤n≤105)n(1≤n≤10^5)n(1≤n≤105)的数组a(ai≤n)a(a_i≤n)a(ai≤n)。给出1≤k≤n1≤k≤n1≤k≤n,求把这个序列分成若干块的方案,使得对于每个区间,只出现一次的数字不超过k kk个。题目分析:O(n2)O(n^2)O(n2)的DP很显然f[i]=∑f[j−1],j满足[j,i]中只出现一次的数≤kf[i]=\sum f[...原创 2019-05-16 20:14:56 · 226 阅读 · 0 评论