国庆集训Day3笔记

简单数据结构

例题

CF103D

\(y\geq \sqrt m\)时暴力做

\(y< \sqrt m\)时暴力与处理

bzoj2054

倒序处理,只有最后一个覆盖操作对这个位置有影响

并查集维护每个位置的下一个未覆盖的位置

CF480E

倒序操作,答案显然是不降的

枚举一个当前的答案\(ans\),判断每次是否可以\(+1\)

\(check(ans+1)\)的话只需要考虑新增的正方形,即有一列是确定的,维护一下每个格子最远可以向左/右多少个格子,用一个\(sliding\ windows\)和单调队列进行check即可

ZJOI2016 旅行者

考虑分治

假设两个点的路径一定会经过中间的线(假设纵向切割)。枚举中间的线上的某一点并强制路径经过它,使用Dijkstra求出这个点到路径两端的的距离。两个点在同一侧的时候还需要继续分治下去。

时间:\(T(n,m)=O(n^2mlognm)+2T(n,\frac{m}{2})\)

\(S=nm\),每次取较长的边分治是更优的,则\(T(S)=O(S\sqrt S)+2T(\frac{S}{2})=O(S\sqrt SlogS)\)

进阶数据结构

分治

基础

平面最近点对

分治求左半边和右半边的最小距离\(H\),只需要考虑分界线两边距离为\(H\)的矩形内的点,每次check时不需要枚举很多年的点对(大致只需检查\(6\)个左右,考虑一个长\(2H\)\(H\)的矩阵,这里面最多放入\(6\)个点使得两两之间距离至少为\(H\)

One Problem

类似上一题的分治

树分治(点分治)

重心:所有子树的\(size\)\(\leq \frac{n}{2}\)

bzoj1468(solved)

模板题

bzoj2599(solved)

同上,注意由于维护的是最小值无法通过容斥求得

One Problem

cdq分治(按时间分治)

时间在前的操作才会对时间在后面的操作产生影响

三维偏序

\(z\)为时间维度,按照\(z\)排序。分治后只需考虑左半边对右半边的贡献,直接树状数组

\(T(n)=2T(\frac{n}{2})+O(nlogn)\)\(O(nlog^2n)\)

bzoj2683

对时间维度建立分治结构,只考虑前面的加对后面的询问的影响,接下来同上

bzoj2716

\(ans=|x_i-x_j|+|y_i-y_j|\)
暴力拆绝对值,跑四遍cdq

假设\(x_i>x_j,y_i>y_j\),则\(ans=(x_i+y_i)-(x_j+y_j)\),每次询问\(max(x_j+y_j)\)即可

整体二分

POJ2104(q<=2*10^5)

模板题,略

LOJ2169

同上

线段树分治

bzoj4025(solved)

在插入边的同时判断是否为二分图:带权并查集,维护每个点到它所在的子树的根的距离,在同一棵树加边时判断是否会形成奇环

对于每一条边的存在时间\([L,R]\),把它放到线段树上拆成log段,按照遍历线段树的方式进行修改,在所有的叶子节点处处理询问。这样的话需要维护一个支持回退的并查集,如果路径压缩的话时间复杂度会退化成\(O(n)\),故只能按秩合并。总时间复杂度\(O(nlog^2n)\)

例题

HNOI2016 网络

重链剖分:往上跳的轻边条数是\(O(logn)\)条(记\(u\)的重儿子为\(v\),则\(siz_u>2siz_v\),故跳轻边时子树大小至少除以2)

维护删除:维护两个堆\(P,Q\),其中\(P\)处理插入,\(Q\)处理删除,每次询问时找到\(P.top()\)\(Q.top()\),相同则同时弹出(使用线段树分治可以避免使用堆,但是时间复杂度均为\(O(nlog^3n)\)

二分\(mid\),检查所有\(\geq mid\)的路径的交是否包括\(u\),单个询问会有3个\(log\)的时间(线段树分治+二分+倍增LCA)

整体二分:插入删除路径使用树上差分,强制在线的话可以转化成单点修改,区间(子树)查询,BIT维护。分治时将插入删除分至两边:

直接二分:询问是否有\(\geq mid\)且不经过\(u\)的路径。线段树\([l,r]\)维护\(\forall w\in[l,r]\)路径的交

ARC093F

假设\(1\)在第1位,记\(G_i=[p_{2^{k-1}+1},p_{2^k}]\),则\(min(G_i)\notin A\)

容斥,枚举\(S\in[n]\),有\(\forall i\in S,min(G_i)\in A\)

\(f[i][S]\):在\(a_m...a_i\)中,\(S\)\(G\)的最小值在其中的方案数

posted @ 2019-10-03 20:34  EncodeTalker  阅读(167)  评论(0编辑  收藏  举报