9.1
当已经选了 a l , a r a_l,a_r a l , a r 时,( l , r ) (l,r) ( l , r ) 与外面无关。区间 dp,d p l , r = ∑ k = l , a l < a k < a r r d p l , k + d p k , r n u m l , r + 1 dp_{l,r}=\frac{\sum_{k=l,a_l<a_k<a_r}^r dp_{l,k}+dp_{k,r}}{num_{l,r}}+1 d p l , r = n u m l , r ∑ k = l , a l < a k < a r r d p l , k + d p k , r + 1 。维护 n u m l , r , ∑ d p l , k , ∑ d p k , r num_{l,r},\sum dp_{l,k},\sum dp_{k,r} n u m l , r , ∑ d p l , k , ∑ d p k , r 转移。
9.2
模拟赛 T2。
容斥强行不选 s s s 这些材料,矩阵快速幂。
模拟赛 T3。
按对角线向后推,计算经过次数。不能经过 3 3 3 次。经过次数形如 0 , ⋯ , 0 , 1 , 2 , ⋯ , 2 , 1 , 0 , ⋯ , 0 0,\dotsb,0,1,2,\dotsb,2,1,0,\dotsb,0 0 , ⋯ , 0 , 1 , 2 , ⋯ , 2 , 1 , 0 , ⋯ , 0 或 0 , ⋯ , 0 , 2 , 2 , 0 , ⋯ , 0 0,\dotsb,0,2,2,0,\dotsb,0 0 , ⋯ , 0 , 2 , 2 , 0 , ⋯ , 0 。维护两个 1 1 1 的位置 l , r l,r l , r 或是不是状态 2。如果 0 , ⋯ , 0 , 1 , 2 , 1 , 0 , ⋯ , 0 0,\dotsb,0,1,2,1,0,\dotsb,0 0 , ⋯ , 0 , 1 , 2 , 1 , 0 , ⋯ , 0 的 2 2 2 被禁止,去到状态 2,否则如果有 2 2 2 的位置被禁止则无解。如果 l , r l,r l , r 有被禁止,每次 2 2 2 的区间 ( l , r ) (l,r) ( l , r ) 会增加 1 1 1 ,否则 ( l , r ) (l,r) ( l , r ) 会缩短 1 1 1 ,2 × n 2\times n 2 × n 个对角线后结束。
按 d u < d v < d w d_u<d_v<d_w d u < d v < d w 排序,对于每个 u u u 对 ( v , w ) (v,w) ( v , w ) 进行三元组计数。
m m m 条边的三元组计数 O ( m 1.5 ) O(m^{1.5}) O ( m 1 . 5 ) 。如果 d u ≤ m 2 3 d_u\le m^{\frac{2}{3}} d u ≤ m 3 2 ,有 ∑ d u = m \sum d_u=m ∑ d u = m ,复杂度 O ( m 1 3 ( m 2 3 ) 1.5 ) = O ( m 4 3 ) O(m^{\frac{1}{3}}(m^{\frac{2}{3}})^{1.5})=O(m^{\frac{4}{3}}) O ( m 3 1 ( m 3 2 ) 1 . 5 ) = O ( m 3 4 ) 。否则 u , v , w u,v,w u , v , w 至多 m 1 3 m^{\frac{1}{3}} m 3 1 个,复杂度 O ( m 1 3 ( ( m 1 3 ) 2 ) 1.5 ) = O ( m 4 3 ) O(m^{\frac{1}{3}}((m^{\frac{1}{3}})^2)^{1.5})=O(m^{\frac{4}{3}}) O ( m 3 1 ( ( m 3 1 ) 2 ) 1 . 5 ) = O ( m 3 4 ) 。
有源汇上下界最小流,建超级源汇点补齐流量,跑最大流,从汇点向源点连容量 + ∞ +\infty + ∞ ,再跑最大流。答案为汇点到源点的流量。
最小费用可行流,建超级源汇点补齐流量,费用加上下界流量乘代价,从汇点向源点连容量 + ∞ +\infty + ∞ 代价 0 0 0 的边。费用加上超级源汇点的最小费用最大流。
将边 ( u , v ) (u,v) ( u , v ) 拆为 ( u , v , 1 , r ) (u,v,1,r) ( u , v , 1 , r ) 和 ( v , u , 1 , b ) (v,u,1,b) ( v , u , 1 , b ) ,分别表示红边或蓝边,都不流就不染色。左边的红点的右边的蓝点流出大于流入,连 ( s , i , 1 , + ∞ , 0 ) (s,i,1,+\infty,0) ( s , i , 1 , + ∞ , 0 ) ,反之连 ( i , t , 1 , + ∞ , 0 ) (i,t,1,+\infty,0) ( i , t , 1 , + ∞ , 0 ) 。最小费用可行流。如果超级源点出边满流则合法。
9.3
要求前缀和时刻大于零。设 c i c_i c i 为第 i i i 个 A 前有多少个 B,w ( l , r ) = ∑ i = l r m a x ( c i − l + 1 , 0 ) w(l,r)=\sum_{i=l}^r max(c_i-l+1,0) w ( l , r ) = ∑ i = l r m a x ( c i − l + 1 , 0 ) ,外层 wqs 二分。拆开 max,预处理 ∗ p i *p_i ∗ p i 为最小的位置使得 c p i − i > 0 c_{p_i}−i>0 c p i − i > 0 ,内层 d p i = min d p j + s u m j − s u m p j − 1 − j × ( i − p j + 1 ) dp_i=\min dp_j+sum_j-sum_{p_j-1}-j\times(i-p_j+1) d p i = min d p j + s u m j − s u m p j − 1 − j × ( i − p j + 1 ) ,斜率优化。
等价于度数 ≤ 2 \le 2 ≤ 2 的点到其余点的距离最大值。动态维护直径,每次中心偏移 1 1 1 ,dfn 序上子树加,全局 min。度数 = 3 =3 = 3 就不贡献,度数 > 3 >3 > 3 无解。
升序排序,二分答案 x x x 。对于每个 i i i 可以 O ( n ) O(n) O ( n ) 计算 ( i , j , k ) (i,j,k) ( i , j , k ) 的答案。设阈值 B B B ,前 B B B 个的贡献 O ( n B ) O(nB) O ( n B ) 计算。如果没超过 k k k ,B B B 的 ( B , j , k ) (B,j,k) ( B , j , k ) 贡献 ≤ k B \le \frac{k}{B} ≤ B k 。后边只需要前 k B \frac{k}{B} B k 小的 ( j , k ) (j,k) ( j , k ) 对,O ( k B log n ) O(\frac{k}{B}\log n) O ( B k log n ) 预处理加 O ( n + k B ) O(n+\frac{k}{B}) O ( n + B k ) 计算。B B B 取 k B \sqrt{\frac{k}{B}} B k 。
模拟赛 T3。
最优策略决策为从下往上每个人删掉存在的最劣的数。O ( n 3 ) O(n^3) O ( n 3 ) 模拟,开始点下移时每个人的决策点单调,复杂度 O ( n 2 ) O(n^2) O ( n 2 ) 。
9.4
按值从小往大 dp,枚举笛卡尔树子树内哪个位置不被确定。保证数据随机,笛卡尔树深度 O ( n log n ) O(n\log n) O ( n log n ) ,只用以 2 2 2 为底的幂,O ( ( V ) ) O(\sqrt(V)) O ( ( V ) ) 预处理 O ( 1 ) O(1) O ( 1 ) 查询。
容斥,设 f i f_i f i 为至少 i i i 条红边的方案,蓝色四元完全子图的数量为 f 0 − f 1 + f 2 − f 3 + f 4 − f 5 + f 6 f_0-f_1+f_2−f_3+f_4−f_5+f_6 f 0 − f 1 + f 2 − f 3 + f 4 − f 5 + f 6 ,红色四元完全子图的数量为f 6 f_6 f 6 。分类讨论,三/四元环计数。
将一个 1 1 1 和 0 0 0 捆绑起来。设有 n n n 个 01 01 0 1 和 m m m 个 0 0 0 。最后一层 1 1 1 的贡献为 ( n + m − 1 n − 1 ) \binom{n+m-1}{n-1} ( n − 1 n + m − 1 ) 。对于一个 0 0 0 ,枚举上面有 i i i 个 10 10 1 0 和 j j j 个 0 0 0 ,有 ( i + j i ) \binom{i+j}{i} ( i i + j ) 种可能,即有 ( i + j i ) \binom{i+j}{i} ( i i + j ) 个这样的 0 0 0 。10 10 1 0 同理,算作一个大小为 2 2 2 的点。要求形如 ∑ i = 0 n ∑ j = 0 m ( i + j i ) \sum_{i=0}^n\sum_{j=0}^m \binom{i+j}{i} ∑ i = 0 n ∑ j = 0 m ( i i + j ) 。有 ∑ i = 0 n ( i m ) = ( n + 1 m + 1 ) \sum_{i=0}^n\binom{i}{m}=\binom{n+1}{m+1} ∑ i = 0 n ( m i ) = ( m + 1 n + 1 ) 。所以 ∑ i = 0 n ∑ j = 0 m ( i + j i ) = ( n + m + 2 n + 1 ) − 1 \sum_{i=0}^n\sum_{j=0}^m \binom{i+j}{i}=\binom{n+m+2}{n+1}-1 ∑ i = 0 n ∑ j = 0 m ( i i + j ) = ( n + 1 n + m + 2 ) − 1 。lucas 定理计算。
9.5
模拟赛 T3
初始在 x x x ,先向左走,令 v l = max i = 1 x − 1 a i , v r = max i = x + 1 n a i vl=\max_{i=1}^{x-1}a_i,vr=\max_{i=x+1}^n a_i v l = max i = 1 x − 1 a i , v r = max i = x + 1 n a i ,若 v l < v vl<v v l < v ,答案为 [ x + 1 , n ] [x+1,n] [ x + 1 , n ] 中第一个 > v l >vl > v l 的位置;否则为 [ 1 , x − 1 ] [1,x-1] [ 1 , x − 1 ] 中最后一个 > max ( a i , v r ) >\max(a_i,vr) > max ( a i , v r ) 的位置。线段树上二分。
模拟赛 T4。
分治。记 v l i = max j = i m i d a j , v r i = max j = m i d + 1 i a j vl_i=\max_{j=i}^{mid}a_j,vr_i=\max_{j=mid+1}^i a_j v l i = max j = i m i d a j , v r i = max j = m i d + 1 i a j ,[ i , j ] [i,j] [ i , j ] 合法等价于 max ( v l i , v r j ) ≤ j − i + 1 \max(vl_i,vr_j)\le j-i+1 max ( v l i , v r j ) ≤ j − i + 1 ,即 j ≥ i + v l i + 1 , i ≤ j − r j + 1 j\ge i+vl_i+1,i\le j-r_j+1 j ≥ i + v l i + 1 , i ≤ j − r j + 1 ,按 i + v l i − 1 i+vl_i-1 i + v l i − 1 排序,树状数组维护 j j j 。正反做一遍得到划分 [ 1 , i ] [1,i] [ 1 , i ] 的答案 f i f_i f i 和划分 [ i , n ] [i,n] [ i , n ] 的答案 g i g_i g i 。
分治维护修改的变化量。当某个 a i a_i a i 改为 1 1 1 时,对于分治区间 [ l , r ] , l ≤ i ≤ m i d [l,r],l\le i\le mid [ l , r ] , l ≤ i ≤ m i d ,当 v l i > v l i + 1 vl_i>vl_{i+1} v l i > v l i + 1 是,区间 [ l l , i ] [ll,i] [ l l , i ] 的 v l vl v l 值发生变化,合法的 j j j 发生变化,重新计算 ∑ g j + 1 ′ \sum g'_{j+1} ∑ g j + 1 ′ ,和原先应当贡献的 ∑ g j + 1 \sum g_{j+1} ∑ g j + 1 做差。·
9.6
模拟赛 T4。
如果 l x < l y , r x < r y l_x<l_y,r_x<r_y l x < l y , r x < r y 则 x x x 在 y y y 前,跑字典序最小的拓扑序。主席树优化建图,优先拓扑主席树点,优先队列拓扑。
9.9
模拟赛 T4。
对每个左端点维护右端点 r e s i res_i r e s i 。操作形如删去一个数再加入一个数。如果删掉 p p p 上的 a p a_p a p ,找到左右最近的 l , r l,r l , r 使得 a l = a r = a p a_l=a_r=a_p a l = a r = a p 。那么 r e s l + 1 , ⋯ , r e s p res_{l+1},\dotsb,res_p r e s l + 1 , ⋯ , r e s p 对 r r r 取 max。实际上要维护 max r e s i − i + 1 \max res_i-i+1 max r e s i − i + 1 ,因为 r e s i res_i r e s i 单调,所以相当于线段树上二分找到最左的小于 r r r 的位置然后区间覆盖。
删除好做,加入难做,考虑线段树分治。先把所有的时刻的 a i a_i a i 都当作存在,右移右端点维护出所有 r e s i res_i r e s i 。 multiset 维护每个值出现的位置来求 l , r l,r l , r 。进入一个区间后进行删除操作。撤销操作记录下所有修改和下传的位置和值。
u u u 先手胜当且仅当 u u u 一定在最大匹配上。找出一个最大流, u u u 一定在最大匹配上当且仅当 u u u 被选且残量网络缩点后 u u u 和 s s s 不在同一强连通分量。
9.10
去掉头尾相等的。枚举回文中心 i i i ,取最长回文串 s [ l , r ] s[l,r] s [ l , r ] ,求最大 j j j 使得 s [ 1 , j ] = s ′ [ r + 1 , r + j ] s[1,j]=s'[r+1,r+j] s [ 1 , j ] = s ′ [ r + 1 , r + j ] 。等价于反串和自己匹配,kmp。翻转再做一遍。
模拟赛 T3。
令 a < b a<b a < b ,a a a 边构成若干连通块,合法 b b b 边跨过两个连通块。不能走 b b b 边离开一个连通块再走 b b b 边返回,3 a > 2 b 3a>2b 3 a > 2 b ,只有 s i z > 3 siz>3 s i z > 3 的连通块有用,状压,最短路, 2 n 4 m log 2 n 4 m 2^{\frac{n}{4}}m\log {2^{\frac{n}{4}}m} 2 4 n m log 2 4 n m 。
9.11
模拟赛 T4。
等价对于每个 r r r 求最小的 l l l 使得 [ 1 , l ] [1,l] [ 1 , l ] 和 [ r , m ] [r,m] [ r , m ] 的边能组成奇环。将边复制一遍接在后面,即对于每个 i i i 求最小的 p p p 使得 [ i , p ] [i,p] [ i , p ] 间的边组成奇环。p p p 有单调性。依次求每个 i i i ,每次右移 p p p ,加入的这条边 p p p 会在求 [ i , p ] [i,p] [ i , p ] 时都有贡献。插入容易删除困难,用线段树分治。初始没有边,分治到 i i i 时会对之后一个区间加入若干条边,一共加边 m m m 次。
答案为最大度数。允许误差,每次将边集一分为二。希望将每个点度数除以 2 2 2 上取整,在左右部点各建一个虚点,将度数补齐为全是偶数,存在欧拉回路,将相邻的边分开得到两个边集,分别递归。log max d i \log \max d_i log max d i 轮后 max d i = 1 \max d_i=1 max d i = 1 ,将此时边集中的点染成一种颜色。
9.12
将 x x x 三进制拆分,0 → 01 , 1 → 10 , 2 → 11 0\to 01,1\to 10,2\to 11 0 → 0 1 , 1 → 1 0 , 2 → 1 1 ,如果 i i i 或 i + 1 i+1 i + 1 被影响就不选。两边用同个随机排列来遍历数组,并尽量利用坏段。
先补一个 0 0 0 ,在一直补 1 1 1 至 1024 1024 1 0 2 4 。还原时把最后一个 0 0 0 以后扔掉。有 16 × 66 = 1056 16\times 66=1056 1 6 × 6 6 = 1 0 5 6 个有效位,要用 1056 − 1024 = 32 1056-1024=32 1 0 5 6 − 1 0 2 4 = 3 2 位说明哪些位置被控制。令 c i = 0 c_i=0 c i = 0 后最近的 c j = 0 c_j=0 c j = 0 ,前 j − i − 1 j-i-1 j − i − 1 条信息第 i i i 位为 0 0 0 ,第 j − i j-i j − i 条信息第 i i i 位为 0 0 0 。还原时可以建图,找 31 31 3 1 个点的内向基环树的长为 16 16 1 6 的环,是唯一的。
记 s u m = ∑ c i = 1 d i s i , x sum=\sum_{c_i=1} dis_{i,x} s u m = ∑ c i = 1 d i s i , x ,每步 s u m sum s u m 减小 2 2 2 最优。维护 m n u , m x u mn_u,mx_u m n u , m x u 表示最多最少能将 u u u 子树内 ∑ v = s u b t r e e ( u ) , c v = 1 d i s ( u , v ) \sum_{v=subtree(u),c_v=1}dis(u,v) ∑ v = s u b t r e e ( u ) , c v = 1 d i s ( u , v ) 变为多少。讨论最大的子树是否大于一半。
用异或表示。令 a → 1 , b → 2 , c → 3 a\to 1,b\to 2,c\to 3 a → 1 , b → 2 , c → 3 ,f ( s ) = ⊕ s i f(s)=\oplus s_i f ( s ) = ⊕ s i 不变。设 d p i dp_i d p i 为划分 s [ 1 , i ] s[1,i] s [ 1 , i ] 的方案,枚举最后一个字符是什么。
广义串并联图。删 1 1 1 度点,缩 2 2 2 度点,叠合重边。记 f i f_i f i 为第 i i i 条边在生成树上的方案数,g i g_i g i 为不在的方案数。删一度点,f i f_i f i 乘进答案;缩 2 2 2 度点,f i = f u f v , g i = f u g v + f v g u f_i=f_uf_v,g_i=f_ug_v+f_vg_u f i = f u f v , g i = f u g v + f v g u ;叠合重边,f i = f u g v + f v g u , g i = g u g v f_i=f_ug_v+f_vg_u,g_i=g_ug_v f i = f u g v + f v g u , g i = g u g v 。
9.13
建 trie 树。先假设全选 A A A ,计算答案与 ∑ d i A c i \sum d_iAc_i ∑ d i A c i 的差值。按 dfn 序转移,设 d p i dp_i d p i 为上一个单词在 i i i 的答案,d p x = max d p i + ( B − d e p l c a − 1 A ) c x dp_x=\max dp_i+(B-dep_{lca-1}A)c_x d p x = max d p i + ( B − d e p l c a − 1 A ) c x 。李超线段树维护转移。
9.14
枚举连向环外的点 u u u 。在挖掉 u u u 的子图中求全源最短路,答案为 min d i s x , y + e u , x + e u , y + min i ≠ x , i ≠ y e u , i \min dis_{x,y}+e_{u,x}+e_{u,y}+\min_{i\ne x,i\ne y}e_{u,i} min d i s x , y + e u , x + e u , y + min i = x , i = y e u , i 。线段树分治,加入点时进行松弛操作。复杂度 O ( n 3 log n ) O(n^3\log n) O ( n 3 log n ) 。
9.15
Boruvka 算法。每次对于每个连通块找到最小的到连通块外的边,全部连起来。每次连通块数量减半。将矩阵加对对角线翻转,扫描线找到每个 i i i 的最小边。线段树分别维护最小值和连通块不同的次小值。
9.16
模拟赛 T3。
找出一颗生成树,满足除了根以外的所有点。调整根,只有奇环有用。只要有一个奇环,a 1 a_1 a 1 就可以减去 2 × v a l 2\times val 2 × v a l 。因为保证 a 1 a_1 a 1 和 d 1 d_1 d 1 奇偶性相同,找一颗 bfs 的生成树即可。
9.18
模拟赛 T3。
对于一个菊花,有 n 0 n0 n 0 个黑色儿子,n 1 n1 n 1 个白色儿子,n 0 > n 1 n0>n1 n 0 > n 1 当做 n 0 − n 1 + 1 n0-n1+1 n 0 − n 1 + 1 个黑;n 1 > n 0 n1>n0 n 1 > n 0 当做 n 1 − n 0 − 1 n1-n0-1 n 1 − n 0 − 1 个白;否则若 n n n 为偶 Bob 要先走当做黑;否则当做白。
模拟赛 T4。
设 d p u dp_u d p u 为 u u u 被投出时的票数,( d p u , u ) (dp_u,u) ( d p u , u ) 和 ( d p v , v ) (dp_v,v) ( d p v , v ) 较大者先出。u u u 的儿子 v v v 影响 d p u dp_u d p u 。对 v v v 按投出先后排序,二分一个前缀在 u u u 前被投出,即 a u + ∑ b v − s i − 1 > d p v i a_u+\sum b_v-s_{i-1}>dp_{v_i} a u + ∑ b v − s i − 1 > d p v i 。平衡树维护每个点的儿子,支持插入删除二分。
此时单点修改复杂度为 O ( d e p ) O(dep) O ( d e p ) 。重链剖分,求出 u u u 在轻儿子中二分的结果 a n s ans a n s ,若 a n s > d p s o n ans>dp_{son} a n s > d p s o n ,d p u = a n s dp_u=ans d p u = a n s ;否则在轻儿子中二分 a u + ∑ b v − b s o n a_u+\sum b_v-b_{son} a u + ∑ b v − b s o n 。d p u dp_u d p u 为关于 d p s o n dp_{son} d p s o n 的分段常函数,段数为 2 2 2 ,可以合并。线段树维护重链信息乘积,修改时改链顶父亲的轻儿子的平衡树,查询时从链底 dp 值加上区间信息求 dp 值。
9.19
模拟赛 T3。
假设一个最大值为左边峰顶。设 f i f_i f i 表示前缀 [ 1 , i ] [1,i] [ 1 , i ] ,一个序列在 i i i ,另一个序列最小在哪里。g j g_j g j 为后缀。从左边峰顶到 n n n 枚举右边峰顶,设 d p i , 0 / 1 dp_{i,0/1} d p i , 0 / 1 表示当前左/右序列在 i i i ,另一序列的最大最小值。
模拟赛 T4。
最后是菊花,枚举菊花中心 u u u ,删去与 u u u 连边的奇度数点找欧拉路径。
9.23
模拟赛 T3。
枚举可能贡献的答案对的较大值,只有左右第一个比 i i i 小的 j j j 才有贡献。
模拟赛 T4。
被删除的连续段长度一定是偶数;不会删去 n + k n+k n + k 以后的数;第二段关于中心对称。
枚举第一段长度 i i i ,2 i < n 2i<n 2 i < n ,枚举第二段在 n n n 左侧长为 j j j 。∑ i = 0 k [ 2 i < n ] ∑ j = 0 min ( k − i , n − 2 i − 1 ) ( i k − i − j ) \sum_{i=0}^k[2i<n]\sum_{j=0}^{\min(k-i,n-2i-1)} \binom{i}{k-i-j} ∑ i = 0 k [ 2 i < n ] ∑ j = 0 min ( k − i , n − 2 i − 1 ) ( k − i − j i ) 。下指标关于 i i i 变换量为 O ( 1 ) O(1) O ( 1 ) ,∑ i = l r ( p i ) = 2 × ∑ i = l r ( p − 1 i ) − ( p − 1 r ) + ( p − 1 l − 1 ) \sum_{i=l}^r\binom{p}{i}=2\times\sum_{i=l}^r\binom{p-1}{i}-\binom{p-1}{r}+\binom{p-1}{l-1} ∑ i = l r ( i p ) = 2 × ∑ i = l r ( i p − 1 ) − ( r p − 1 ) + ( l − 1 p − 1 ) 。否则剩余长度 n + k − 2 i − 1 n+k-2i-1 n + k − 2 i − 1 ,剩 k − i k-i k − i 次操作,( n + k − 2 i − 1 − ( k − i ) k − i ) \binom{n+k-2i-1-(k-i)}{k-i} ( k − i n + k − 2 i − 1 − ( k − i ) ) 。
对于不是 2 , 3 2,3 2 , 3 倍数的 i i i ,将 n i \frac{n}{i} i n 中的 2 a 3 b 2^a3^b 2 a 3 b 找出来,每次加入 ( a , b ) , ( a + 1 , b ) , ( a , b + 1 ) (a,b),(a+1,b),(a,b+1) ( a , b ) , ( a + 1 , b ) , ( a , b + 1 ) ,有 log 3 n \log_3 n log 3 n 级别宽的网格。状压 d p i , j , s dp_{i,j,s} d p i , j , s 表示前 i − 1 i-1 i − 1 行已经选完,第 i i i 行选到 j j j 列,当前面上状态为 s s s 。n i \frac{n}{i} i n 只有 O ( n ) O(\sqrt n) O ( n ) 级别,可过。
9.24
扫描线维护编号较小的最大编号为 i i i ,点边容斥强行选 i i i ,主席树维护矩阵。交换 a x , a x + 1 a_x,a_{x+1} a x , a x + 1 时重新做第 x , x + 1 x,x+1 x , x + 1 棵主席树即可。
9.25
从右上往左下确定每个点的颜色。对于点 u u u 最多有 4 4 4 个入边。如果不包含所以颜色,就赋没有出现的颜色。否则如果 v 1 , v 3 v1,v3 v 1 , v 3 通过 c o l v 1 , c o l v 3 col_{v1},col_{v3} c o l v 1 , c o l v 3 的连通块联通,那么 v 2 , v 4 v2,v4 v 2 , v 4 一定不通过 c o l v 2 , c o l v 4 col_{v2},col_{v4} c o l v 2 , c o l v 4 的连通块联通。
设 s u s_u s u 为 ∑ v ∈ s u b t r e e ( u ) a v \sum_{v\in subtree(u)}a_v ∑ v ∈ s u b t r e e ( u ) a v ,答案为 s u 2 − a u 2 − ∑ v ∈ s o n ( u ) s v 2 2 \frac{s_u^2-a_u^2-\sum_{v\in son(u)}s_v^2}{2} 2 s u 2 − a u 2 − ∑ v ∈ s o n ( u ) s v 2 。单点加为链加。类似动态 dp 维护轻儿子处的 ∑ s v 2 \sum s_v^2 ∑ s v 2 。区间加单点查。子树加,先加上 u u u 到根的贡献,再打上子树 tag,维护 0 / 1 / 2 0/1/2 0 / 1 / 2 次方和。树剖时先进入重儿子,再去到每个儿子,再进入轻儿子子树。
9.26
模拟赛 T4。
对 ∣ t i − t j ∣ ≤ r i − l j + 1 \lvert t_i-t_j\rvert\le r_i-l_j+1 ∣ t i − t j ∣ ≤ r i − l j + 1 连 i → j i\to j i → j 求 1 → n 1\to n 1 → n 的最短路。边权赋在点上,一个点只入队一次。按 t i t_i t i 建线段树,取出合法的 v v v 并删除。
先二分出 c n t a , c n t b , c n t c cnt_a,cnt_b,cnt_c c n t a , c n t b , c n t c ,令 c n t a ≤ c n t b ≤ c n t c cnt_a\le cnt_b\le cnt_c c n t a ≤ c n t b ≤ c n t c 。先将序列放 c n t a cnt_a c n t a 个 a a a ,每次加一个 b b b ,每次加一个 c c c 。次数为 2 c n t a + 2 c n t b c n t c ≤ 5 3 n 2cnt_a+2cntb_cntc\le \frac{5}{3}n 2 c n t a + 2 c n t b c n t c ≤ 3 5 n 。
9.27
dij 状求答案,与除去 ( u , v ) (u,v) ( u , v ) 的 u → t u\to t u → t 最短路相关。找出最短路树,非树边进行路径取 min。
有决策单调性,二分栈,主席树维护前 k k k 大的和。统计答案,只有不交区间有贡献,区间对区间 k k k 大取 min,如果一个点最后的值小于自己的值就可以选。
9.29
每个位置对答案的贡献为向下递归的层数。设 ≤ i \le i ≤ i 的数最后出现在 p i p_i p i ,( i , i + 1 ) (i,i+1) ( i , i + 1 ) 被断开的层为 p i − i p_i-i p i − i 。i i i 的贡献为 max ( p i − 1 − ( i − 1 ) , p i − i ) \max (p_{i-1}-(i-1),p_i-i) max ( p i − 1 − ( i − 1 ) , p i − i ) 。取到后面的为 a p i = i a_{p_i}=i a p i = i 。
a n s = ∑ i ( n − i ) ! ( ∑ j ( j − 1 i − 1 ) ( i − 1 ) ! ( j − i ) + ( j i ) ( i ! − ( i − 1 ) ! ) ( j − i + 1 ) ) ans=\sum_i(n-i)!(\sum_j\binom{j-1}{i-1}(i-1)!(j-i)+\binom{j}{i}(i!-(i-1)!)(j-i+1))
a n s = i ∑ ( n − i ) ! ( j ∑ ( i − 1 j − 1 ) ( i − 1 ) ! ( j − i ) + ( i j ) ( i ! − ( i − 1 ) ! ) ( j − i + 1 ) )
上指标求和,最后只与 i i i 有关的式子。
9.30
模拟赛 T4。
建出 dfs 树,非树边赋随机权值,随机异或哈希。如果割两条树边,只能是 h s h u = h s h v hsh_u=hsh_v h s h u = h s h v 。相同的 h s h i hsh_i h s h i 都在到根的链上,且有决策单调性,对于每个相同权值放在序列上分治。两边 ( u , f a u ) , ( v , f a v ) (u,fa_u),(v,fa_v) ( u , f a u ) , ( v , f a v ) 的答案为:跨过 u u u 的点对减跨过 v v v 的点对加两倍没有跨过 u u u 但跨过 v v v 的点对。后面的贡献在 dfs 序上维护主席树,在两点处 + 2 +2 + 2 ,lca 处 − 4 -4 − 4 。