
分块
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
BZOJ 3585 mex 莫队算法+分块
BZOJ 3585 mex题目链接:右转进入题目题目大意:给定n,m,n个数(0每次询问一段区间[L,R],在aL,a(L+1),,,,aR中第一个没有出现的自然数是多少?n,m题解:裸的莫队算法。但是这个题有一些值得注意的地方:第零,由于莫队算法有nsqrt(n)次修改,m次询问,n和m同阶。可以看到修改次数比询问次数多得多。辣么说如果用线段树的话原创 2017-03-25 19:51:48 · 543 阅读 · 0 评论 -
反射弧(arcs) - 分块 - 哈希表
题目大意:n个点排成一行,每个点有一个颜色C。问有多少a<b<a′<b′a<b<a'<b'a<b<a′<b′,使得Ca=Ca′,Cb=Cb′,Ca!=CbC_a=C_{a'},C_b=C_{b'},C_a!=C_bCa=Ca...原创 2019-04-09 11:33:24 · 375 阅读 · 0 评论 -
灯 - 分块
题目大意:有一列灯,每个灯有颜色。每次操作形如将某种颜色的灯全部点亮或者熄灭,问亮着的灯的段数。一开始全灭。n,q≤105n,q\le10^5n,q≤105。题解:显然先把相邻颜色相同的球扔掉,然后用点数减边数统计段数(连通块数),点数显然,考虑边数。转为一个对颜色建点的图,两点连边边权表示这两种颜色有多少灯是相邻的,那么边数是O(n)的。然后每次就是加入或者删除一个点求生成子图边权之和。显然...原创 2019-03-19 15:32:45 · 244 阅读 · 0 评论 -
遇见 - 随机 - 分块
题目大意:给一列数,问有多少区间,出现的数字都出现了奇数次。题解:给每种数字赋一个随机权值。那么[L,R][L,R][L,R]合法,当且仅当,SR xor SL−1=QLS_{R}\ \mathrm{xor}\ S_{L-1}=Q_{L}SR xor SL−1=QL,其中QLQ_LQL是类似扫描线维护区间不同数字的那个感觉,就是每次你要把(pre...原创 2018-11-24 18:30:20 · 794 阅读 · 0 评论 -
Rpg - dp - 结论 - 数论分块
题目大意:这个RPG采用回合战斗,怪物只有一种,但是个数无限多,小X初始攻击力为1,防御力为0。小X的生命也是足够多。每消灭一次怪物,小X可以得到一个金币,这个金币可以增加1攻击或1防御。回合规则如下:小X攻击一次怪物,然后怪物攻击小X,伤害为对方的攻击减去己方的防御,如果这个值小于零,则不造成伤害。当怪物生命为0时,战斗结束。你很容易理解,小X总有一个时候会变得无敌,但是小X想知道在变无敌之前...原创 2018-11-23 09:22:45 · 270 阅读 · 0 评论 -
几何 - 组合数学 - 分治FFT - 分块
题目大意:有n个正四面体,第k个边长是k个木棍。想要摧毁第k个正四面体,当且进当移除了至少k个正四面体,以及四个结点至少是两条边的段点。现在要摧毁至少m个正四面体,问方案数,不考虑顺序和空间同构,n≤60000,p=105+3n\le60000,p=10^5+3n≤60000,p=105+3。p为模数。题解:首先摧毁第k(k&amp;amp;gt;1)k(k&amp;amp;gt;1)k(k&amp;gt;1)个的...原创 2018-10-07 14:57:51 · 419 阅读 · 0 评论 -
cot - 分块
题目大意:维护一个等腰直角三角形(两条直角边贴着坐标轴),支持子等腰直角三角形(两条直角边和坐标轴垂直)加1和求和。n≤103,Q≤105,3sn\le10^3,Q\le10^5,3sn≤103,Q≤105,3s题解:发现n非常小,传统数据结构没有优势。考虑如果所有修改在询问之前,只要每个询问和每个之前的修改取个交即可。那么设有q次修改,每s次修改后暴力重构前缀和数组,询问时从前缀和里得到重...原创 2018-09-26 12:38:38 · 392 阅读 · 0 评论 -
AGC 002 D Stamp Rally - 分块
显然可以整体二分加可持久化并查集但是注意到撤销不需要可持久化可以直接按秩合并;其次注意到二分之后可以直接kruskal重构树;然而我都不想写,所以就随手敲了一个分块,然后精细的实现可以做到空间线性。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#...原创 2018-08-15 19:35:19 · 272 阅读 · 0 评论 -
CODECHEF Chef and Churus - 分块
是个论文题 题目大意,给定n个数字和n个区间,每次修改一个数字的权值或者询问一段区间的区间的和。 考虑分块,记录ans[i]表示询问第i块的答案,con[i][j]表示第i块的若干区间有多少包含位置j,那么每次A[x]加上y就会使得ans[i]+=con[i][x]*y 考虑询问零散的块怎么办,就是一个单点修改区间求和,直接做带log,考虑修改只有q次,但是询问有nsqrt(q)次,因此维护...原创 2018-08-02 15:30:38 · 330 阅读 · 0 评论 -
CF 472 G Design Tutorial: Increase the Constraints - bitset - 分块
题目大意:给定两个01字符串A和B,多次A和B的两个子串有多少位置不一样。 考虑分块,设ans(a, b)表示A的第a块和B从b开始的答案,用bitset优化即可。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<bit...原创 2018-07-30 21:42:47 · 245 阅读 · 0 评论 -
codeforces 804 D. Expected diameter of a tree - 分块(并不显式分块) - dp
题目大意:给你一张森林,每次询问两颗树TA,TB(A≠B)TA,TB(A≠B)T_A,T_B(A\neq B),求: ∑x∈TA∑y∈TBD(T=(V(TA)⋃V(TB),E(TA)⋃E(TB)⋃{(x,y)}))∑x∈TA∑y∈TBD(T=(V(TA)⋃V(TB),E(TA)⋃E(TB)⋃{(x,y)}))\sum_{x\in T_A}\sum_{y\in T_B}D(T=(V(T_A)\bi...原创 2018-06-25 12:31:00 · 304 阅读 · 0 评论 -
Educational Codeforces Round 16 String Set Queries - AC自动机 - 分块
传送门 题目大意:每次向集合种加入一个串,删除一个串(已经存在的), 给定一个串,问集合中每一个串在询问串种出现次数之和,字符串总长<=3e5。强制在线。 题解:如果离线的话可以预先建出一个AC自动机,然后数据结构。 强制在线,一个做法是分块,考虑建立两个AC自动机,一个大一个小,每次向小的AC自动机里面加入一个串然后暴力重构,如果小的AC自动机大小超过s那么就把小的暴力合并到大的上面...原创 2018-02-10 14:19:31 · 279 阅读 · 0 评论 -
选数 - 容斥 - 分块 - FWT
题目大意:有n个数字,要求选出k个不同的数字使得异或和是s,对所有选择方案求gcd并求和。n≤106,ai,s≤m≤50000n\le10^6,a_i,s\le m\le50000n≤106,ai,s≤m≤50000题解:首先关于gcd可以容斥成∑i=1nf(i)ϕ(i)\sum_{i=1}^n f(i)\phi(i)∑i=1nf(i)ϕ(i),f(i)f(i)f(i)表示选k个不同的数...原创 2019-04-16 15:46:42 · 533 阅读 · 0 评论