[BZOJ2138]stone Hall定理+线段树 假设把每堆石子拆成AiAiA_i个点,每个询问拆成KiKiK_i个点,就相当于每次添加KiKiK_i个点,然后询问此时的最大匹配能增加多少。 通过Hall定理可以判断匹配的合法性。但因为本题的区间没有包含,把询问按照LiLiL_i排序,RiRiR_i是递增的,在剔除掉没有被任一区间覆盖的石子堆之后,一段询问区间对应的石子也是一段连续的区间,我们不需要判断每个子集,而只需要判断每个区间是否满足Ha...
[2018江苏省队集训] value 值域分块+斜率优化 先考虑a=ba=ba=b的情况。 我们按aiaia_i从小到大排序,枚举iii并令x=aix=aix=a_i,那么[i,n][i,n][i,n]都是xxx的贡献,接下来就是找一个最大的bj⋅(i−j),(j∈[1,i−1])bj⋅(i−j),(j∈[1,i−1])b_j\cdot (i-j),(j\in[1,i-1]),看成关于iii的函数就是bj⋅i−bj⋅jbj⋅i−bj⋅jb_j\cdot...
min_25筛学习小记 终于在考试中碰到了一题不能用杜教筛的函数,被迫来学这个。。。概述首先这个函数f(x)f(x)f(x)要求是积性函数,而且f(p)f(p)f(p)和f(pc)f(pc)f(p^c)都要很好计算,设一个“假的”f′(x)f′(x)f'(x)表示把xxx直接当成质数时的f(x)f(x)f(x),f′(x)f′(x)f'(x)是(或者能拆成)完全积性函数(比如说简单多项式),且∑ni=1f′(...
[联合集训6-26] 树上染色 决策单调性 我们设cost(y,x)cost(y,x)cost(y,x)表示从yyy刷到xxx的代价,设du=h−depth(u),du=h−depth(u),d_u=h-depth(u),。 cost(y,x)=Cy⋅(dx(dx+1)2−dy(dy−1)2)+C2y⋅(dx−dy+1)−Hycost(y,x)=Cy⋅(dx(dx+1)2−dy(dy−1)2)+Cy2⋅(dx−dy+1)−Hycost(y...
[联合集训6-25] 蓝雨 线段树+主席树+hash 先考虑p=qp=qp=q的情况,习惯先把求第kkk大变成求第kkk小。 那么我们逐个确定第kkk小的串每种数字包含了多少个。假设当前我们已经确定了x−1x−1x-1之前的数的个数,此时对于每个左端点iii,合法的右端点都是一个区间[li,ri][li,ri][l_i,r_i]。现在考虑二分确定xxx的个数,我们把序列中为xxx的位置单独挑出来,这些位置把序列分成若干段,假如二分有midmidmi...
[联合集训6-26] 盒子 莫比乌斯反演+杜教筛 题目就是求∑ni=1∑nj=1i+jgcd(i,j)−2n2∑i=1n∑j=1ni+jgcd(i,j)−2n2\sum_{i=1}^n\sum_{j=1}^n\frac{i+j}{\gcd(i,j)}-2n^2 枚举d=gcd(i,j)d=gcd(i,j)d=\gcd(i,j), ∑d=1n∑i=1n∑j=1n[gcd(i,j)=d]i+jd∑d=1n∑i=1n∑j=1n[gcd(i,j)=d...
[联合集训6-22] 路灯 整体二分+扫描线树状数组 先给每个点重新设一个坐标(就是把给定的两个边界强行定成横纵坐标找),这个坐标可以直接通过和两个边界叉积得到。 于是点iii的答案就是其左下方所有点答案的第kikik_i小值,如果不足kikik_i个点答案就是iii。 于是我们可以考虑整体二分,二分一个时间MidMidMid,把编号≤Mid≤Mid\le Mid的点强行点亮,看剩下的点中有多少个也能跟着亮。这个二维数点可以横纵坐标分别为一二关键...
[联合集训6-22] monkey_sort 概率与期望+矩阵快速幂+树状数组 根据期望的线性性,我们只需对于每两个位置(i,j)(i,j)(i,j)计算出其相对位置改变的概率,并根据aiaia_i和ajaja_j的大小关系统计贡献即可。于是我们不难得到一个O(n2k)O(n2k)O(n^2k)的DP。设fi,j,kfi,j,kf_{i,j,k}表示当前(i,j)(i,j)(i,j)两个位置再进行kkk步交换操作使得i>ji>ji>j的概率(边界就是fi,j,...
[联合集训6-22] 疑惑 位运算+FFT 根据期望的线性性,我们可以对每一位分别考虑其为111的概率。那么假设一位有c0c0c_0个000,c1c1c_1个111,选kkk个xor和为111的方案数显然为∑c1i=0[i|2](c1i)(c0k−i)∑i=0c1[i|2](c1i)(c0k−i)\sum_{i=0}^{c_1}[i|2]{c_1\choose i}{c_0\choose k-i}。FFT即可。 代码:#inclu...
[联合集训6-21] 最小拓扑序 贪心 首先可以发现对于每个点vvv最多添加一条边指向它,假设添加了边x→v,y→v(x>y)x→v,y→v(x>y)x\to v,y\to v(x>y) 换成x→y,y→vx→y,y→vx\to y,y\to v不会更劣。 我们贪心选点加入拓扑序。那么考虑当前局面一个入度为000的点的集合,我们会在当前可添加边数允许的情况下,尽可能选择一个编号大的点放入拓扑序,假设我们选择点iii,那么对...
[联合集训6-21] LiaPo 矩阵快速幂 奇数的很显然是(m−1)n−(−1)n(m−1)(m−1)n−(−1)n(m−1)(m-1)^n-(-1)^n(m-1)。 对于偶数的情况,假设先不考虑对称不同的限制,我们可以DP的时候只需要关心当前为是否与第一位相同。那么考虑到对称不同的限制,我们可以两个两个填(也就是iii与i+n2i+n2i+\frac{n}{2}一起填),那么我们只要关心当前的两个位置和1,n2+11,n2+11,\fr...
[联合集训6-19] K小数查询 分块+二分答案 有一种常数比较小的O(nn−−√log2n)O(nnlog2n)O(n\sqrt n \log^2 n)的做法。 分块,每个块维护一个其中元素排好序之后的数组。修改的时候零散块直接重构,整块打标记。询问的时候先二分答案midmidmid,那么就转化成求小于等于midmidmid的数的个数,对于零散的块重构后暴力数,整块的如果标记≤mid≤mid\le mid答案就是块大小,否则直接在数组上二分...
[联合集训6-19] 山洞 点分树 一句话题意就是求点分树最小深度。 点分树有一个性质:我们称点iii在点分树上距叶子的距离为其权值wiwiw_i,那么对于两个点u,vu,vu,v满足wu=wv=kwu=wv=kw_u=w_v=k,在原树路径(u,v)(u,v)(u,v)上一定存在点ttt使得wt>kwt>kw_t>k,证明很显然。 我们对每个点iii求出一个二进制状态,二进制第kkk位表示该点子树中存不存在一个wj...
[联合集训6-19] 新干线 猜测题意+拆点网络流 题意还有一些细节如下: 1. 同一站点同一轨道同一时刻最多只能发一列货车 2. 直接经过的列车不占用停车位 3. 每条轨道上不允许发生客车超过货车的情况,但同时出发或同时到达某站是合法的,而且不占用该站台的停车位,就算客车货车速度相同且同时出发仍然算合法的 4. 求能发出货车且在MaxtimeMaxtimeMaxtime内到达终点的最大值。题中说到不能影响客车运行,也就是每列客车中...
[联合集训6-18] 栈 吉司机线段树 这个做法很巧妙。 考虑一个单调栈的插入过程。假如把插入的数倒过来,依次和栈底元素chkmax,如果chkmax成功就把它放入栈底,最终等效于顺序插入的结果。 于是我们把所有操作倒序处理,假如一个单调栈被询问了xxx次,我们就在线段树上给其分配xxx个下标,也就是说最后线段树一共是询问个数个下标,每个下标对应的是某个单调栈的某次询问。 那么用吉司机线段树维护区间chkmax,遇到一个询问就把对...
[联合集训6-18]不同班级 容斥+分治NTT 我们设f(x)f(x)f(x)是至少有xxx个人与本班人匹配的方案数,那么根据容斥就有Ans=∑mi=0(−1)if(i)(n−i)!Ans=∑i=0m(−1)if(i)(n−i)!Ans=\sum_{i=0}^m (-1)^if(i)(n-i)! ai=bi=1ai=bi=1a_i=b_i=1的时候是经典的错排问题,f(x)=(nx)f(x)=(nx)f(x)={n\choose x}。 对...
[联合集训6-18] 奥妮的大楼 问题转化就是给定nnn个二元组,每组中选出一个使得其互不相同,最大化另一个的和。 那么对于每个二元组我们对这两个值连一条无向边,现在的问题就是对每一条边定向使得每个点出度≤1≤1\le 1,并最大化每个点乘上其入度的和。 那么有解一定是若干个树和环套树,对于环套树的情况定向方式是唯一的,这样每个点贡献degi−1degi−1deg_i-1次,degidegideg_i表示其度数;对于树的情况根...
[联合集训6-18]指阶数乘 扩展欧拉定理 设f(n)=n(n−1)(n−2)...f(n)=n(n−1)(n−2)...f(n)=n^{(n-1)^{{(n-2)}...}},那么f(n)modm=nf(n−1)modφ(m)+φ(m)modmf(n)modm=nf(n−1)modφ(m)+φ(m)modmf(n) \bmod m=n^{f(n-1)\bmod \varphi(m)+\varphi(m)}\bmod m。直接递归即可,递归...
[联合集训6-15] 盟誓的文艺复兴 数论 若c=2kc=2kc=2k,abc=a(bk)2abc=a(bk)2ab^c=a(b^k)^2;若c=2k+1c=2k+1c=2k+1,abc=(ab)(bk)2abc=(ab)(bk)2ab^c=(ab)(b^k)^2。所以我们只需要考虑c≤3c≤3c\le 3的情况。 那么能表示成ab2ab2ab^2的很好求,就是∑n13a=1μ2(a)(⌊na−−√⌋−a)∑a=1n13μ2(a)(⌊na...
[联合集训6-15]相互再归的鹅妈妈 数位DP+斯特林反演 问题要求无序方案数,可以转化成求有序方案数再除以n!n!n!即可。 先考虑去掉互不相同的限制,最后用斯特林数容斥掉即可。 可以发现从高往低扫,假如出现RRR有一位是111,而且有一个数这位填了000,那么剩下的数就可以再RRR的范围内随便填,因为最后都可以通过这个数把异或和调成000。于是我们可以通过枚举是哪一位最初发生了这种情况,求出g(i)g(i)g(i)表示选出iii个数异或和为000的...
[联合集训6-14] 一道很好玩的几何题 设ki,jki,jk_{i,j}表示i,ji,ji,j连线的斜率,viviv_i表示第iii个关键点。 给出一个结论:∀i,f(vi)=vi+1∀i,f(vi)=vi+1\forall i,f(v_i)=v_{i+1}。假设该结论成立,那么就有kvi−1,vi>kvi,vi+1kvi−1,vi>kvi,vi+1k_{v_{i-1},v_i}>k_{v_i,v_i+1}。 考虑证明这...
[联合集训6-12] String 后缀树 先考虑假设我们把所有后缀建成一个Trie树,那么一个后缀字典序能成为最大就会带来一些限制,具体地就是从根出发遍历这个串,遍历的边上的字母映射的值要大于其他边上的字母。我们只要对于每个后缀带来的限制判一下环即可,复杂度O(n2c)O(n2c)O(n^2c),其中ccc为字符集大小。 可以利用后缀树的性质优化上面的操作,也就是把只有一条出边的点压缩起来,其中第一条边的字母充当压缩后的边上的字母即可。...
[联合集训6-12] Mirror 状压DP 因为光路是可逆的,不闭合的光路都会被算进答案,所以可以把问题转化为最大化闭合光路长度,答案就是4nm4nm4nm减掉其两倍。 首先考虑如果两个闭合光路共用一个镜子,那么把这个镜子拿走答案不变,所以存在一种最优方案使得每行每列的镜子都是偶数个,而且一定是相邻两个配对。于是状压每一行镜子的奇偶性, 并记录当前镜子数量,一列一列填镜子即可。 因为镜子数量最多为2(n+m−2)2(n+m−2)2(n+...
[联合集训6-12] Fraction 莫比乌斯反演+杜教筛+类欧几里得 因为区间可以差分成前缀,我们只用考虑≤ab≤ab\le \frac{a}{b}的最简真分数jiji\frac{j}{i}的个数。 Ans=∑1≤j<i≤n[j≤aib][gcd(i,j)=1]Ans=∑1≤j<i≤n[j≤aib][gcd(i,j)=1]Ans=\sum_{1\le j∑1≤j<i≤n[j≤aib]∑d|gcd(i,j)μ(d)=∑d=1nμ(d)∑i=1⌊nd...
[联合集训6-11] 期望题 因为A1A1A_1是必须要减完的,所以我们只要求出对于Ai(i=2...n)Ai(i=2...n)A_i(i=2...n)在A−1A−1A-1减完前期望被减了多少次,最后加上A1A1A_1即可。因为期望的线性性,我们只需要分别考虑每一个AiAiA_i即可。 不妨以考虑A1,A2A1,A2A_1,A_2为例。我们可以把其看成二维平面上的一个点(A1,A2)(A1,A2)(A_1,A_2),每次分别...
[联合集训6-11] 数数题 多项式+自然数幂和 因为保证了Bi<Ai+1Bi<Ai+1B_iiii位的111分配给第i−1i−1i-1位变成AiAiA_i,求一共有多少种分配方法。 那么我们设ft(n)ft(n)f_t(n)表示假设第ttt位上是nnn(i=1..t−1i=1..t−1i=1..t-1位都是BiBiB_i),有多少种分配方案,那么枚举分给下一位多少,就有 ft(n)=∑i=0nft−1(iAt+Bt−1)ft(n...
[联合集训6-9]Congroo 二进制分组+凸包上二分 查询叉积最大值就是找该向量切凸包上的切点。因为只有在末尾加入删除的操作,我们利用二进制分组,维护loglog\log个凸包,询问的时候在每个凸包上二分找切点即可。 要注意要分别对上下凸壳二分,因为凸包是一个环但二分其实是对一个序列二分,所以直接二分会挂。 程序里还有几个复杂度不对的地方: 1. 二进制分组应该有四个相同的才把前两个合并,而不是有两个相同就合并,否则每次加入/删除第2k2k2^...
[联合集训6-9] Psy 组合数学+杜教筛 显然,符合条件的数必须满足任何长度的后缀字典序必须严格大于全串。 假设一个串TTT可以由几个相同的串sss拼接而成,我们称TTT为循环串。显然所有循环串都是不满足条件的。 那么对于非循环串,那么其所有循环表示(就是切下一个前缀拼在后面)都是互不相同的。给出一个结论:一个合法串和一个环的最小循环表示串一一对应。 先证明一个合法串一定是最小循环表示串。(以下PxPxP_x表示长度为xxx的前缀,...
[联合集训6-9] El 点分治+哈希表 转化题意,就是根据题目所给的式子定义颜色,求同色三角形的个数。 有一个经典结论:完全图同色三角形个数=总三角形个数-异色角个数/2。因为每个异色三角形都恰有两个异色角。 在有向完全图中结论依然成立,但这里的异色角就要分别统计两出,一入一出,两出三种情况。我们只需要分别知道每个点进/出的红/绿路径数量即可。这个可以用点分治解决。 具体地,对于一个分治中心rootrootroot,我们求出它到该...
[JZOJ5749] 小J真爱粉交流群 博弈 首先不难发现: B只会在A所在位置下面选择建墙或者不建; 如果选择不建A一定会向下走。 那么就可以推导出B在某一行建的墙一定是A移动的区间。 那么我们设fi,l,rfi,l,rf_{i,l,r}表示B在第iii行的[l,r][l,r][l,r]下有墙,A在l−1l−1l-1时的分数,gi,l,rgi,l,rg_{i,l,r}则表示A在r+1r+1r+1的分数。 两者转移类似,我们考虑ff...
[JZOJ5748] 小Y增员操直播群 递推+分治 题目中是把所有而不是一部分互膜记录给出了。。。 注意到原本在一个子群的成员到最后一定是一个连续的区间,假设我们在已知[l,r][l,r][l,r]是一个群,考虑如何分裂它。设与rrr相连的最小点是xxx,当区间长度为偶数且x=l+r−12x=l+r−12x=\frac{l+r-1}{2}时左右大小相同,xxx即为左半部分右端点,否则r−x+l−1r−x+l−1r-x+l-1相连的点一定就是左半部...
[JZOJ5745]幂 数论阶 首先考虑当nnn有平方因子p2p2p^2时,取a=pa=pa=p就无解了,所以我们只考虑μ2(n)=1μ2(n)=1\mu^2(n)=1的情况。 考虑中国剩余定理,只要保证对于nnn的每个因子pipip_i满足对于所有aaa,求最小的kkk,使得ank≡a(modpi)ank≡a(modpi)a^{n^k}\equiv a \pmod {p_i},即nk≡1(modpi−1)nk≡1(modpi...
[JZOJ5746]和 自然数幂和+中国剩余定理 {nj}{nj}\begin{Bmatrix} n\\j \end{Bmatrix} 首先考虑计算模质数下的自然数幂和,通过stirling数转化成下降幂, ∑i=0nik=∑i=0n∑j=0k{kj}ij–=∑j=0k{kj}∑i=0nij–∑i=0nik=∑i=0n∑j=0k{kj}ij_=∑j=0k{kj}∑i=0nij_\sum_{i=0}^n i^k=\sum_{i=0}^n\sum...
[JZOJ5728] 简单计数|| 容斥+处理环上问题 先考虑链上的做法。 先预处理fi,jfi,jf_{i,j}表示iii个元素分到jjj个集合中,所有集合大小之积的和,fi,j=k⋅fi−k,j−1fi,j=k⋅fi−k,j−1f_{i,j}=k\cdot f_{i-k,j-1}。 那么假如第iii种数字的cicic_i个被分成了aiaia_i个,那么问题就转化成有nnn种颜色的球,第iii种球有aiaia_i个,求排列这些球使得相邻球不同色的...
[JZOJ5727] [色]和[流泪]|| 我们把把一个游戏看成在二维平面上玩,一开始在(0,0)(0,0)(0,0),从左边删x+1x+1x+1,从右边删y+1y+1y+1。 那么假如左边删xxx个,右边删yyy个,那么SG(x,y)=0SG(x,y)=0SG(x,y)=0,我们称之为终止态,那么和终止态相邻且不为终止态的点SG=1SG=1SG=1,称其为边界态。 不难发现对于一个xxx,终止态只有一个,而且随着xxx增大yyy是单调...
[BZOJ5333][SDOI2018]荣誉称号 树型DP 首先发现最终的aiaia_i一定和a⌊i2k+1⌋a⌊i2k+1⌋a_{\lfloor\frac{i}{2^{k+1}}\rfloor}同余。 那么只要把第k+1k+1k+1层及其之后的代价统计进前kkk层即可,也就是预处理出vi,jvi,jv_{i,j}表示前kkk层中的aiaia_i在模mmm调整至jjj的代价。 然后只要设fi,jfi,jf_{i,j}表示点iii到第kkk层的路径上aa...
[Codeforces963] E-Circles of Waiting 网格图高斯消元 好像四联通八联通的网格图消元都可以那么干,以下是四联通的,具体地就是每条方程都只和(x,y),(x−1,y),(x+1,y),(x,y−1),(x,y+1)(x,y),(x−1,y),(x+1,y),(x,y−1),(x,y+1)(x,y),(x-1,y),(x+1,y),(x,y-1),(x,y+1)四个未知量有关。 对于这样的高斯消元,我们可以选择从(0,0),(1,0),(2,0)...(...
[JZOJ5739]毒奶 子集DP 这里讲的是O(3n⋅n)O(3n⋅n)O(3^n\cdot n)的可以过的暴力,正解不会。。。 把问题转化成给了nnn个白点,nnn个黑点,给定了n−1n−1n-1条白白边和黑黑边,求再填nnn条黑白边使之联通的方案数。 先用给定的边缩点,记下缩点后每个大点的sizesizesize,然后随意钦定一个白点当根,剩下就是要求一层黑一层白的填,直接子集DP即可。 具体地,设FS,c,iFS,c,...
[JZOJ5740]幻想世界 快速数论变换 首先发现α,βα,β\alpha,\beta的贡献和ak,bkak,bka_k,b_k的贡献是可以分开计算的,把一个DP状态看成是二维坐标上的一个点,转移就是每次从左边(x−1,y)(x−1,y)(x-1,y)或者从下面(x,y−1)(x,y−1)(x,y-1)转移。 先考虑计算α,βα,β\alpha,\beta的贡献。 考虑枚举两个点(x1,y1),(x2,y2)(x1≤x2,y1≤y2)...
[JZOJ5736]斐波那契 求gcd(afn+bfn+1,cfn+dfn+1)gcd(afn+bfn+1,cfn+dfn+1) \gcd (af_n+bf_{n+1},cf_n+df_{n+1})。 首先有几个简单的性质: gcd(fx,fy)=fgcd(x,y)gcd(fx,fy)=fgcd(x,y)\gcd(f_{x},f_{y})=f_{gcd(x,y)} gcd(a,b)=gcd(a−kb,b)gcd(a,b)...
[JZOJ5735]身份证 Trie树+二维偏序 我们可以对所有人的三个串分别拿出来建三棵Trie树,一个人在Trie树上的位置就组成一个三元组(a,b,c)(a,b,c)(a,b,c),然后询问相当于三个指针在三棵Trie树上移动,每次询问有多少个(dfnai,dfnbi,dfnci)(dfnai,dfnbi,dfnci)(dfn_{a_i},dfn_{b_i},dfn_{c_i})在三个特定的区间内。直接三维偏序再面向数据开空间再减减枝是可以...
[AGC024] E - Sequence Growing Hard 树型DP 把问题看成每次向序列中添加一个[1,K][1,K][1,K]的数,假设我们要填的数是xxx,因为要保证字典序变大,那么所填的位置往后的第一个非xxx数必须<x<xxxx中的任意位置再填一个xxx都是等价的,所以等同于只能在一个<x<xxxx。 那我们把填一个数看成一个二元组(t,w)(t,w)(t,w),表示在第ttt次填了数www,假设把这个www填的位置后面的那个&l...
[BZOJ2001][HNOI2010]城市建设 分治最小生成树 有一个引理,就是做最小生成树的时候,假设有mmm条边权值不确定,是可以把整个图简化到边数只有O(m)O(m)O(m)级别的。 也就是说假如考虑分治,把修改的那些边看成不确定边,然后简化一下图,分治下一层的时候就大概只需要做边数只有分治区间大小级别的最小生成树,复杂度就能降到O(mlog2m)O(mlog2m)O(m\log ^2m)。 具体简化图的方法如下: 1. 先强制合并所有不确定边(...
[Codeforces 966]E - May Holidays 分块+虚树 对询问分块,把每n−−√n\sqrt{n}个询问放在一起处理,并对这些询问涉及到的点建出一棵虚树。 把一个点的反转看成是其到根的路径上的每个点titit_i的+1+1+1或−1−1-1,那么虚树上一条边的titit_i变化都是相同的。我们在处理每一块之前重构所有的titit_i,然后对于每条边维护所有没有去度假的人的titit_i,并使之有序且要把titit_i相等的合并起来,然后只需要再维护一...
[Codeforces 976]D - Degree Set 构造 当n=0n=0n=0,只需一个点即可。 当n=1n=1n=1,构造一个d1+1d1+1d_1+1个点的完全图即可。 那么对于原问题要求构造度数集合为{d1,d2,...,dn−1,dn}{d1,d2,...,dn−1,dn}\{d_1,d_2,...,d_{n-1},d_n\}的一个图,可以从所有dn+1dn+1d_n+1个点中拿出d1d1d_1个点,向其它所有点连边,就满足了集合中d1d1d...
[BZOJ2870]最长道路tree 边分治 因为点分治会带来子树信息合并的问题,于是考虑通过添加虚点的方法把多叉树转成二叉树,然后采用边分治,每次考虑经过分治重边的情况,把两边的所有点按路径上的最小权值排序,然后相互更新一下即可,复杂度O(nlog2n)O(nlog2n)O(n\log ^2n)。 因为多叉树转二叉树的过程中添加了虚点,所以假如xxx和yyy的lca是虚点,那么路径(x,y)(x,y)(x,y)上原本的那个实点lca的信...
[CTSC2018]假面 01背包的删除 首先记录ai,jai,ja_{i,j}表示单位iii生命值为jjj的概率,那么每次修改可以O(m)O(m)O(m)。 对于询问,先求出exi=∑mij=1ai,jexi=∑j=1miai,jex_{i}=\sum_{j=1}^{m_i} a_{i,j}表示单位iii存活的概率。那么我们只要对于每一个单位iii,求出除了该单位的剩下k−1k−1k-1个单位中,有1..k−11..k−11..k-1...
[BZOJ3669][NOI2014]魔法森林 LCT 把边按权值aaa从小到大插入,并维护权值bbb的最小生成树。具体地,如果link的一条边的两个端点已经联通,那么把这两个点路径上bbb最大的边cut掉。最后用111到nnn路径上bbb的最小值加上当前aaa更新答案。 注意到边权不太好维护,可以把每条边重开一个点,向两个端点连边。 代码:#include<iostream>#include<cstdio>#inc...
[JXOI2018]守卫 区间DP 题面 设fl,rfl,rf_{l,r}表示[l,r][l,r][l,r]的答案。 先考虑f1,nf1,nf_{1,n},那么nnn上必须放一个保镖,假设不能被nnn看到的是很多个区间[lk,rk][lk,rk][l_k,r_k],不难发现一个性质:[rk+2,n][rk+2,n][r_k+2,n]的任一位置是看不到[lk,rk][lk,rk][l_k,r_k]的任一位置的。所以rk,rk+1r...
[JXOI2018]游戏 线性筛 题面 我们定义不存在ddd使得d|x,L≤d,d≠xd|x,L≤d,d≠xd|x,L\le d,deq x的数xxx为好数。 那么对于一个排列ppp的t(p)t(p)t(p)显然是最后一个好数的出现位置。 线性筛求出好数个数mmm。 枚举最后一个好数的出现位置iii,那么满足的排列的个数有(i−1m−1)m!(n−m)!(i−1m−1)m!(n−m)!{i-1\choose m-1}m...
[JXOI2018]排序问题 二分 题面 考虑一个长度为nnn的序列Gobo Sort之后有序的期望尝试次数是n!a1!a2!...n!a1!a2!...\frac{n!}{a_1!a_2!...} 其中aiaia_i表示iii在序列中出现的次数。 那么就是我们可以把mmm分配给al,..,aral,..,ara_l,..,a_r ,使得∏ri=lai!∏i=lrai!\prod_{i=l}^r a_i!尽可能小。 注意到一...
多项式求逆&多项式开方 多项式求逆运用基于倍增的多项式求逆可以在O(nlogn)O(nlogn)O(n\log n)时间内,对于一个nnn次多项式A(x)A(x)A(x)求出B(x)B(x)B(x)使得B(x)⋅A(x)=1B(x)⋅A(x)=1B(x)\cdot A(x)=1。 假设当前我们已经求出了在modxnmodxn\mod x^n意义下A(x)A(x)A(x)的逆B′(x)B′(x)B'(x),考虑...
JXOI2018游记 愿每一个努力的少年都能追逐到属于自己的梦想。Day 0 (4.27)因为江科太远,于是我们决定住过去。报道的时候碰到了赣州中学黑压压一片神犇,以及我校选手全部没带现金不知道如何报道。。。 我和QYQ分到一间房,后来把XG和lornd一起叫过来了,颓了一下午斗地主。 嗯,江科的食堂真好吃,就是穿着一身蓝出入感觉有点诡异。 晚上四个人在宾馆干了一些扰民的事。。。大概21:30...
[GDOI2014]beyond 扩展KMP+并查集 题目等价于求给定两个长度都为nnn的串A,BA,BA,B,求一个最大的LLL使得A1..LA1..LA_{1..L}与B1..LB1..LB_{1..L}循环同构。 我们先对A,BA,BA,B互相做一遍扩展KMP,记Ai..nAi..nA_{i..n}与BBB的LCP为exaiexaiexa_i,exbexbexb同理。 循环同构一定是存在xxx,使得A1..x=BL−x+1..L ...
[BZOJ3670]动物园 扩展KMP 先用扩展KMP求出Si..nSi..nS_{i..n}与SSS的LCPnextinextinext_{i}。 考虑每个后缀Si..nSi..nS_{i..n}的所有前缀Si..kSi..kS_{i..k}对numknumknum_k的贡献,有贡献的kkk显然是在一个区间[i,min(2i−1,i+nexti)−1][i,min(2i−1,i+nexti)−1][i,\min(2i-1,i+ne...
扩展KMP 扩展KMP为了叙述方便,设S(i)S(i)S_{(i)}为串SSS从iii开始的后缀 扩展KMP可以在线性时间内求出对于一个文本串SSS的每一个后缀S(i)S(i)S_{(i)}与模板串TTT的最长公共前缀(LCP),我们设其为exiexiex_i。 假设我们已经知道了T(i)T(i)T_{(i)}与TTT的LCP,设为nextinextinext_i,考虑怎么求exiexiex_i。...
[BZOJ2983]reading 矩阵快速幂 首先不难列出一个O(n⋅262)O(n⋅262)O(n\cdot 26^2)的DP方程: 设fi,cfi,cf_{i,c}表示权值最多为iii,结尾字符为ccc的方案数,vx,yvx,yv_{x,y}为x,yx,yx,y的差异值,那么有 fi,c=1+∑fi−vc,d,dfi,c=1+∑fi−vc,d,df_{i,c}=1+\sum f_{i-v_{c,d} ,d} 注意到vx,y≤5vx,...
Miller-Rabin算法与Pollard's Rho算法总结 Miller-Rabin素数测试费马小定理:当ppp是素数时,对于a∈[1,p−1]a∈[1,p−1]a\in [1,p-1],满足 ap−1≡1(mod&nbsp;p)ap−1≡1(mod&nbsp;p)a^{p-1}\equiv 1 (mod \ p) 但是其逆命题是假命题,也就是说对于a∈[1,p−1]a∈[1,p−1]a\in [1,p-1],我们测试所有的ap−1ap...
[BZOJ2098]又是nand 树链剖分+位运算 观察nand这个运算,发现它有交换律但是没有结合律,所以就不要考虑各种差分或者分段计算合并的方法,而且得按顺序维护。 首先可以想到树链剖分,因为有顺序,所以线段树区间上要维护从lll到rrr的运算结果和从rrr到lll的运算结果,而且对于运算结果还与进来的初值有关,发现每一位是独立的,我们要对每一位维护初值是0/10/10/1,运算顺序是l→r/r→ll→r/r→ll\to r/r \to l的...
[2018雅礼省选集训3-30]path 平面图最短路最小割 根据题意,题目给定的图是一个平面图。如果把111号点到不了的点和到不了nnn号点的点及所连边删掉,那么图就大概是有一条111到nnn的链,然后还有一些边覆盖在上面,这样的话它的对偶图就大概是一棵树。 再考虑颜色限制怎么搞,假设xxx与其父亲的边在原图中代表边(u,v)(u,v)(u,v),那么xxx在TTT割就表示不选u+1,...,v−1u+1,...,v−1u+1,...,v-1这些点的颜色...
[2018雅礼省选集训3-30]program 注意到程序的运行是连续的,所以假设序列最左端左边还有一个>>>(且不能删除),那么一个区间子程序运行的过程一定时整个程序运行过程的一个子段。于是只需要用链表模拟一边总程序,再求出子段的开始和结束时间,直接用前缀和减一下即可。 设fifif_i表示指针第一次从i−1i−1i-1移动到iii的时间,gigig_i表示指针第一次从iii移动到i−1i−1i-1的时间,那么[l,r][l,r...
[2018雅礼省选集训3-30]table 递推 考虑第ppp行的每个数对询问fx,yfx,yf_{x,y}的贡献。 对于x>px>px>p,观察fi,j=afi−1,j+bfi−1,j−1,fi,j=afi−1,j+bfi−1,j−1,f_{i,j}=af_{i-1,j}+bf_{i-1,j-1},每个fp,ifp,if_{p,i}相当于向下走一步并×a×a\times a,或者向右下走一步并×b×b\times b,再给路径条数...
[2018雅礼省选集训3-25]bsh 分治最短路 因为是三角剖分,所以每一条对角线都把多边形分成两部分,于是考虑分治。 先找到一条把多边形分得比较均匀的对角线,对两个端点做一下bfs,处理掉起点和终点分别在这条对角线两侧的询问(分经过某个点或者经过这条边三种情况更新),然后继续分治直到三角形为止。 选对角线的时候直接选最远的即可。 代码:#include<iostream>#include<cstdio>...
[2018雅礼省选集训4-2]Problem A 位运算+势能分析线段树 首先把∧∧\land看成把某些位强制变为000,把∨∨\lor看成把某些位强制变为111。那么对于一次修改,如果一个区间内的数这些位都相同就打标记,否则暴力处理左右区间即可。 先证明这样做的复杂度是对的,设fi=flsoni+frsoni+∑20k=0[i中所有数第k位相等]fi=flsoni+frsoni+∑k=020[i中所有数第k位相等]f_i=f_{lson_i}+f_{rson_i}+...
[ARC063] F - すぬけ君の塗り絵 2 / Snuke's Coloring 2 单调栈+线段树 首先发现一定能找到一个最优解使得矩形的每条边要么是边界,要么有一个关键点,所以转化为求周长最大的内部不存在关键点的矩形。 不难发现选择一竖条或者一横条是一定合法的,那么答案下界就至少是2(max(h,w)+1)2(max(h,w)+1)2(\max(h,w)+1),那么最优解一定过x=w2x=w2x=\frac{w}{2}或者y=h2y=h2y=\frac{h}{2},因为在某个四分之一矩形内部...
[2018雅礼省选集训3-31]Max 期望DP 注意到mmm比较小,不妨状压mmm。 我们设fi,j,Sfi,j,Sf_{i,j,S}表示AiAiA_i用掉集合SSS中的操作后值为jjj的概率。 再设gi,j,Sgi,j,Sg_{i,j,S}表示A1..iA1..iA_{1..i}用掉集合SSS中的操作后最大值为jjj的概率,枚举AiAiA_i使用的操作集合转移即可。 复杂度O(nc2m23m)O(nc2m23m)O(nc^2m^23^m...
[BZOJ4555]求和 多项式求逆 设gn=∑ni=0{ni}2ii!gn=∑i=0n{ni}2ii!g_n=\sum_{i=0}^n \begin{Bmatrix} n\\i \end{Bmatrix}2^ii!,题目即求∑ni=0gi∑i=0ngi\sum_{i=0}^n g_i。 考虑gngng_n的组合意义,把nnn个元素放进iii个集合,这些集合有顺序之分,而且每个集合有两种状态,那么考虑枚举一个集合,gn=∑ni=12...
[2018雅礼3-27]subset 分类讨论+三维偏序+二维偏序 首先有个显然的结论,对于一个集合SSS,当ax,bx,cxax,bx,cxa_x,b_x,c_x均不为最大值时从SSS中删去xxx,那么|S|≤3|S|≤3|S|\le 3且一个SSS唯一对应一个答案。 我们先用O(nlog2n)O(nlog2n)O(n\log ^2n)的三维偏序预处理出对于每个xxx,有多少个yyy满足ax>ay,bx>by,cx>cyax>ay,b...
[BZOJ4919]大根堆 启发式合并+线段树/multiset 先考虑O(n2)O(n2)O(n^2)的DP,设fi,jfi,jf_{i,j}表示考虑子树iii中,选的vvv的最大值≤j≤j\le j时最多能选多少个点,那么考虑一个点的转移。 先合并儿子:fi,j=∑x∈sonifx,jfi,j=∑x∈sonifx,jf_{i,j}=\sum_{x\in son_i} f_{x,j} 在选上他自己:chkmax(fi,≥vi,fi,vi−1+1)chkma...
[2018雅礼3-25]arg dp套dp 考虑求LIS的算法,我们有一个数组didi表示上升子序列长度为ii时最后一项的最小值,然后每加入一个值xx,就替换掉dd中第一个≥x≥x的值。于是我们可以用一个三进制状态表示这个dp(00表示还未选,11表示选了且在dd中,22表示选了但不在dd中),转移即可。 复杂度O(3n∗nlogn)O(3n∗nlogn),实测把loewr_bound改成暴力扫的O(3n∗n2)O(3n∗n2)更快。。...
[BZOJ3600]没有人的算术 重量平衡树+线段树 先讲讲重量平衡树是什么,可以先看2013年国家集训队clj的论文。 重量平衡树首先要保证平衡而且不能是均摊平衡,然后要么没有旋转,要么旋转是影响的子树大小要期望loglog\log或者均摊loglog\log。Treap和替罪羊树都满足重量平衡树的条件。 那么对于这题,发现复杂度瓶颈在于比较两个数的大小(复杂度可能达到指数级),因为操作中出现的数的种类是O(n)O(n)O(n),我们希望能给每...
替罪羊树模板 替罪羊树要记一下几个东西:t:当前节点权值cvr:子树当前大小(包括删除的点)sz:子树中元素个数(不包括删除的点)ex:当前元素是否存在插入操作: 1. 插入一个数会导致一些其某些祖先满足要重构的条件,此时要取最浅的祖先直接重构。 2. insert要返回一个 tree ** 类型的东西,表示要重构的那个指针的地址。 3. 重构的时候(在travel)中要把已删除的点空间释...
Treap模板 #include<iostream>#include<cstring>#include<cstdio>using namespace std;int rd(){ static int seed=23333; return (seed=(66666ll*seed+66666ll)&2147483647);}int n;str...
[CF932]E - Team Work 第二类stirling数 还是那个用下降幂替换kkk次幂的套路。推式子: ∑i=1n(ni)ik=∑i=1n(ni)∑j=0k{nj}ij–∑i=1n(ni)ik=∑i=1n(ni)∑j=0k{nj}ij_\sum_{i=1}^n{n\choose i}i^k=\sum_{i=1}^n{n\choose i}\sum_{j=0}^k\begin{Bmatrix} n\\j \end{Bmatrix}i^{\underli...
[BZOJ3512]DZY Loves Math IV 杜教筛+记忆化搜索 发现nnn只有=105=105=10^5,我们先考虑S(n,m)=∑mi=1φ(ni)S(n,m)=∑i=1mφ(ni)S(n,m)=\sum_{i=1}^m \varphi(ni)怎么求。 先把nnn分成两部分,n1=∏pin1=∏pin_1=\prod p_i,即所有质因子一次幂的乘积,n2=∏pci−1in2=∏pici−1n_2=\prod p_i^{c_i-1},即剩下的。不难发现φ(...
PKUWC2018游记 大概2017年12月份才知道5月份pkusc2017签的那个叫做省队一本。 当时感觉自己有学上了。。。 (pku大概是没考虑JX的水平然后给当时那么菜的我发省队一本。。。 本来是打算去thuwc的,然后怕毁约造成影响, 于是选wc的时候就选了pkuwc啦。Day-1(1.28): 长沙雪下的最大的一天(其实还很小),26日下的雪还没融完就又积了一层,结成冰的路面上又覆盖上浅浅的雪花,...
[BZOJ4008][HNOI2015]亚瑟王 期望DP 记住,期望要倒着推。。。 考虑按一轮一轮DP,不免要记录之前轮发动了那些卡牌,这样就gg了。 所以考虑每一张卡牌的贡献,我们就只需要关心还剩多少轮没有发动卡牌,设fi,j" role="presentation" style="position: relative;">fi,jfi,jf_{i,j}表示当前考虑第i" role="presentation" style="position: r
[ARC062]F - Painting Graphs with AtCoDeer 双联通分量+Pólya计数 题面 把边分成三种: 1. 不在点双联通分量中,直接贡献K" role="presentation" style="position: relative;">KKK。 2. 在一个环中,记环长为n" role="presentation" style="position: relative;">nnn,根据Pólya定理,其贡献为(205)1|G|∑g∈GKc(g
[AGC005] F - Many Easy Problems 组合数学+快速数论变换 题面 首先一个联通块也是一棵树,点数=&quot; role=&quot;presentation&quot; style=&quot;position: relative;&quot;&gt;===边数+1&quot; role=&quot;presentation&quot; style=&quot;position: relative;&am
[2018雅礼集训1-23]ete 分块 题面 首先有个性质,就是以某个点为开始\结束的所有前缀\后缀or和只有log" role="presentation" style="position: relative;">loglog\log种,虽然很显然,但要是没想到这题就别做了。 考虑分块,设块大小为B" role="presentation" style="position: relative;">BBB,每个块记录mxi" rol
[2018雅礼集训1-23]盛大的庆典 状压DP 题面 考虑把每一对点的路径放到其lca上考虑,为叙述方便,记sonx" role="presentation" style="position: relative;">sonxsonxson_x为当前点儿子中子树包含x" role="presentation" style="position: relative;">xxx的那一个。设fi,S" role="presentation" style
[LOJ2275][JXOI2017]颜色 线段树+优先队列 显然,任意一种合法的删颜色的方式都和一对合法的切环的断点一一对应。 然后就和BZOJ4382的第一问一样了。 //反正我就把一个≤\le改成了==就过了 代码:#include#include#include#include#include#include#includeusing namespace std;const int maxn=300010;int n,
[LOJ2274][JXOI2017]加法 二分答案+优先队列 大概思路就是:先二分答案xx,check就是从左往右扫,如果当前值不足xx,就贪心地不断选右端点最右的给它加上,然后用线段树\树状数组维护区间加,或者直接用优先队列维护加的次数即可。 具体地,开两个优先队列Q,HQ,H,前者维护当前可选区间的右端点最大值,后者维护当前已选区间左端点最小值,然后从左往右扫到ii: 1. 把左端点位于ii的区间加入QQ。 2. 把左端点小于ii的从HH里扔掉。
[LOJ2273][JXOI2017]数列 DP 不难发现一个性质,若对于Ai−1A_{i-1}的限制是Li−1≤Ai−1≤Ri−1L_{i-1}\le A_{i-1}\le R_{i-1},对于AiA_i的限制是Li≤Ai≤RiL_i\le A_i\le R_i ,那么有Li−1≤LiL_{i-1}\le L_i,Ri−1≥RiR_{i-1}\ge R_i,于是我们考虑DP。 设fi,x,l,rf_{i,x,l,r}表示填了ii个数,AiA_
容斥与反演总结 容斥和反演就是一个东西。朴素容斥原理|A1¯¯¯¯∩A2¯¯¯¯∩...∩An¯¯¯¯|=∑i=1N(−1)n−i∑|T|=i,T={x1,..,xi}|Ax1∩Ax2∩...∩Axi||\overline {A_1}\cap\overline {A_2}\cap...\cap\overline {A_n}|=\sum_{i=1}^N(-1)^{n-i}\sum_{|T|=i,T=\{
[2018雅礼集训1-20]B 分块 题面 考虑把序列分成N−−√\sqrt N块,记cnti,jcnt_{i,j}表示第ii块颜色jj的个数,设si,js_{i,j}为i,ji,j两块之间产生的贡献,通过cntcnt可以O(N−−√)O(\sqrt N)求出,然后对其二维前缀和一下,就可以O(1)O(1)求出一段块的贡献了。 对于单独的块再考虑其内部,和其对中间整块的贡献,加上去即可。 复杂度O(NN−−√)O(N\sqrt
[2018雅礼集训1-20]A 二维前缀和 真思维题。 考虑随便用一个特殊点来表示整个联通块,那么有: 1. 若该联通块未被包含,那么特殊点未被包含。 2. 若该联通块被完全包含,那么特殊点一定被包含。 3. 部分包含不能确定。 用二维前缀和维护1,2。部分包含的联通块一定出现在矩形边界上,把边界搞出来再把为被统计的统计进去即可。 代码:#include#include#include#define fs firs
[HDU4624]Endless Spin 最值反演+DP 首先最值反演(也有人叫min-max容斥)就是: max{S}=∑T⊆S(−1)|T|+1min{T}\max\{S\}=\sum_{T\subseteq S}(-1)^{|T|+1}\min\{T\} 假设位置ii被染黑的时间是XiX_i,那么要求的就是E[max{Xi}]E[\max\{X_i\}],于是转化为对于所有点集SS,求E[mini∈S{Xi}]E[\min_{i\in S}\{
[BZOJ3622]已经没有什么好害怕的了 二项式反演 恰好kk组不好求,先求至少kk组,设恰好kk组方案数为GkG_k,至少为FkF_k。 首先把aa,bb都排序,然后求出tit_i表示aia_i比bb中多少个数大。设fi,jf_{i,j}为考虑a1..ia_{1..i}中选出jj个比bb大的组的方案数,有转移: fi,j=fi−1,j+fi−1,j−1∗(ti−j+1)f_{i,j}=f_{i-1,j}+f_{i-1,j-1}*(t_i-j+1
[BZOJ4455][ZJOI2016]小星星 容斥原理+树型DP 先考虑一个错误的DP,fi,jf_{i,j}表示子树ii中,ii映射到jj的方案数,这样可能一个点被重复映射。 我们考虑多一维状态fi,j,Sf_{i,j,S}表示映射点集至多为SS的方案,枚举SS来DP,用朴素的容斥原理来求出正确答案即可。 代码:#include#include#include#define ll long longusing namespace std;
[2018雅礼集训1-18]日记 线段树 真tm线段树神题。。。 设[l,r][l,r]复杂值为Tl,rT_{l,r} 首先对于询问[l,r][l,r],把问题转化为:∑ni=1∑nj=iTi,j−∑l−1i=1∑l−1j=iTi,j−∑ni=r+1∑nj=iTi,j\sum_{i=1}^n\sum_{j=i}^nT_{i,j}-\sum_{i=1}^{l-1}\sum_{j=i}^{l-1}T_{i,j}-\sum_{i=r+1}^
[BZOJ4671]异或图 线性基+stirling反演 联通图计数一般都是容斥。。。 首先设F(M)F(M)为至少MM个联通块的图的个数,G(M)G(M)为恰好MM个联通块的图的个数,那么有: F(M)=∑i=MN{iM}G(i)F(M)=\sum_{i=M}^N\begin{Bmatrix}i\\M\end{Bmatrix}G(i) 根据stirling反演有: G(M)=∑i=MN(−1)i−M[iM]F(i)G(M)=\sum_{i=M}
[2018雅礼集训1-16]方阵 stirling数反演 题面 如果只考虑行不相同,答案显然为(cM)N−(c^M)^\underline N。 再考虑列不相同的情况,把相同的列看成一个等价类,至多ii个等价类F(i)F(i)的方案为(ci)N−(c^i)^\underline N。 设恰好ii个等价类的方案为G(i)G(i),我们就要求G(M)G(M),而且还有: F(M)=∑i=1M{Mi}G(i)F(M)=\sum_{i=1}^M\begi
[2018雅礼集训1-16]序列 爆搜+贪心 题面 首先问题转化为选取一个(Mi,Vi)(M_i,V_i)的集合,该集合必须满足若Mk|lcm{Mi}M_k|lcm\{M_i\},(Mk,Vk)(M_k,V_k)必须在集合中,最大化∑Vi\sum V_i。 先考虑所有MM都两两互质的情况,对于每个元素我们都可以贪心选或不选。 然后我们想到暴力枚举lcmlcm,就是枚举lcmlcm每个质因子及其指数,但这样复杂度不可接受。 考虑把质因子
[LOJ2325][清华集训 2017]小Y和恐怖的奴隶主 矩阵乘法+奇技淫巧 首先发现状态之和每种体力值的奴隶主个数有关,计算一下发现状态数最多165,于是搞出转移矩阵,设fi,Sf_{i,S}表示i轮时状态为SS,之后的期望,numnum为奴隶主个数+1+1,转移就是fi,S=1num+∑s′→sfi+1,Sf_{i,S}=\frac{1}{num}+\sum_{s' \to s}f_{i+1,S}然后O(T1653logn)O(T165^3\log n)矩阵快速幂,不过
[BZOJ2959]长跑 LCT+双联通分量+并查集 首先在一个边双联通分量中所有点的贡献是都可以算入的。但是因为有加边操作,考虑用LCT来维护缩边双之后的树。 若一次连接的(x,y)(x,y)在同一棵树上,就把xx到yy的路径提出来,缩成一个点。这可能会导致其他某些点的父亲标号改变,所以调用父亲之前一定要用并查集更新一下。 然后因为只有加边,判断在不在一棵树上最好也用并查集,用找根操作常数略大。 代码:#include#includ
[2018雅礼集训1-18]风吕 分块 设B=nm−−−√B=\sqrt{nm},先把权值离散化,然后排序,把每BB个权值分成一块,维护一个二维前缀和。询问时整块的O(1)O(1),单块的O(B)O(B)暴力,总复杂度O(qB)O(qB)。 当然还有各种数据结构做法,比如说可持久化{线段树套线段树}。。。外层线段树维护X轴,内层线段树维护Y轴,然后权值离散排序,每次添加一个权值也就只会改变一个地方,可持久化的那条链要从外层线段树一直延
[BZOJ2843]极地旅行社 LCT模板 半年没打LCT,够呛。。。 这题没有cut? 容易错的地方: 1. rotate(x)时最后确定x应是其父亲左儿子还是右儿子时,有可能它要成为splay的根,所以else后面还要if,(这里比较特殊还不能用isroot判 2. splay双旋时应该先下放祖父再下放父亲。 3. 不仅是access,凡是要用到左右儿子且左右儿子有区分是务必要pushdown,更改了儿子信息务必要update