8.1
a n s = ∑ T = 1 n T k S ( n k ) ∑ d ∣ T d μ 2 ( d ) μ ( T d ) ans=\sum_{T=1}^n T^kS(\frac{n}{k})\sum_{d\mid T}d\mu^2(d)\mu(\frac{T}{d})
a n s = T = 1 ∑ n T k S ( k n ) d ∣ T ∑ d μ 2 ( d ) μ ( d T )
令 f ( T ) = ∑ d ∣ T d μ 2 ( d ) μ ( T d ) f(T)=\sum_{d\mid T}d\mu^2(d)\mu(\frac{T}{d}) f ( T ) = ∑ d ∣ T d μ 2 ( d ) μ ( d T ) ,为积性函数,讨论 f ( p k ) f(p^k) f ( p k ) 的取值。
枚举第一个点和第三个点的横纵坐标之差 i , j i,j i , j ,第二个点有 g c d ( i , j ) − 1 gcd(i,j)-1 g c d ( i , j ) − 1 种选择。
a n s = ∑ i = 1 n ∑ j = 1 m ( n − i ) ( m − j ) ( g c d ( i , j ) − 1 ) ans=\sum_{i=1}^n\sum_{j=1}^m (n-i)(m-j)(gcd(i,j)-1)
a n s = i = 1 ∑ n j = 1 ∑ m ( n − i ) ( m − j ) ( g c d ( i , j ) − 1 )
莫比乌斯反演。
8.3
对每个指数 min-max 容斥,乘起来得到 gcd-lcm 容斥。
l c m ( T ) = ∏ S ⊆ T g c d ( S ) ( − 1 ) ∣ S ∣ + 1 lcm(T)=\prod_{S\subseteq T} gcd(S)^{(-1)^{|S|+1}}
l c m ( T ) = S ⊆ T ∏ g c d ( S ) ( − 1 ) ∣ S ∣ + 1
f ( n ) = x n + 1 − 1 x − 1 f(n)=\frac{x^{n+1}-1}{x-1} f ( n ) = x − 1 x n + 1 − 1 。提出 x − 1 x-1 x − 1 。因为 g c d ( x a − 1 , x b − 1 ) = x g c d ( a , b ) − 1 gcd(x^a-1,x^b-1)=x^{gcd(a,b)}-1 g c d ( x a − 1 , x b − 1 ) = x g c d ( a , b ) − 1 ,用 map 储存指数。
8.6
二分答案,线段树优化建图跑 2-sat。要保证 i i i 不会连到 i ′ i' i ′ ,向排序后一个编号区间连边,中间挖空。
枚举每个 a i = 1 a_i=1 a i = 1 将序列划分开,枚举左/右端点,钦定最大值在左/右边,可以确定一段区间。随机异或哈希比较 ⊕ i = l r f a i = ⊕ i = 1 r − l + 1 f i \oplus_{i=l}^r f_{a_i}=\oplus_{i=1}^{r-l+1} f_i ⊕ i = l r f a i = ⊕ i = 1 r − l + 1 f i 。
8.7
模拟赛 T2。
设 f i , j f_{i,j} f i , j 为前 i i i 天体积为 j j j 的最大质量,图像上凸。f i − 1 f_{i-1} f i − 1 到 f i f_i f i 即删去 [ v i , L ] [v_i,L] [ v i , L ] ,在最开始加上 ( v i , v i t i ) (v_i,v_it_i) ( v i , v i t i ) ,在将前面取 max 为上凸。双端队列维护。
模拟赛 T3。
设 f i , j f_{i,j} f i , j 表示前 i i i 条线段,第 i i i 条左端点为 j j j 的最小代价。f i , j = min k = j − l e n i − 1 j + l e n i f i − 1 , j + ∣ j − l i ∣ f_{i,j}=\min_{k=j-len_{i-1}}^{j+len_i} f_{i-1,j}+\mid j-l_i\mid f i , j = min k = j − l e n i − 1 j + l e n i f i − 1 , j + ∣ j − l i ∣ 。
取 min 和加绝对值函数,下凸,slope trick 维护。
从小到大放入特殊点,当前在点 i i i ,已选的比赛集合为 s s s ,有 j j j 个点在 [ 1 , a i ] [1,a_i] [ 1 , a i ] 中没被选。每个和 1 1 1 比赛的特殊点都是子树中最大的。dp 套 dp 维护上升子序列长度,做前缀最大值后差分后状压得 t t t ,t t t 是 s s s 的子集。枚举没选过的比赛 l l l ,d p i , u p d ( s , t , l ) , j + a i − a i − 1 − 2 l = d p i − 1 , s , t , j × ( j + a i − a i − 1 − 1 2 l − 1 ) × ( 2 l ) ! dp_{i,upd(s,t,l),j+a_i-a_{i-1}-2^l}=dp_{i-1,s,t,j}\times \binom{j+a_i-a_{i-1}-1}{2^l-1}\times (2^l)! d p i , u p d ( s , t , l ) , j + a i − a i − 1 − 2 l = d p i − 1 , s , t , j × ( 2 l − 1 j + a i − a i − 1 − 1 ) × ( 2 l ) ! 。
n n n 个 [ 0 , 1 ] [0,1] [ 0 , 1 ] 之间的随机变量第 k k k 小的为 k n + 1 \frac{k}{n+1} n + 1 k 。引入第 n + 1 n+1 n + 1 个随机变量 x x x ,第 k k k 小的数值等于 x x x 比第 k k k 小小的概率 k n ! ( n + 1 ) ! \frac{kn!}{(n+1)!} ( n + 1 ) ! k n ! 。
d p s , i dp_{s,i} d p s , i 表示选点集 s s s ,连了 i i i 条边,不连通的方案数,d s d_s d s 为 s s s 内部的边,连通的方案数为 ( b s i ) − d p s , i \binom{b_s}i -dp_{s,i} ( i b s ) − d p s , i 。枚举 s s s 的子集 t t t ,d p s , i = ( ( b t j ) − d p t , j ) × ( b s ⊕ t i − j ) dp_{s,i}=(\binom{b_t}{j}-dp_{t,j})\times \binom {b_{s\oplus t}} {i-j} d p s , i = ( ( j b t ) − d p t , j ) × ( i − j b s ⊕ t ) 。枚举答案为第 i i i 条边,a n s = ∑ i m + 1 × ( d p U , k − 1 ( m k − 1 ) − d p U , k ( m k ) ) ans=\sum \frac{i}{m+1}\times(\frac{dp_{U,k-1}}{\binom{m}{k-1}}-\frac{dp_{U,k}}{\binom{m}{k}}) a n s = ∑ m + 1 i × ( ( k − 1 m ) d p U , k − 1 − ( k m ) d p U , k ) 。
8.8
模拟赛 T3。
d p u , 0 / 1 / 2 / 3 dp_{u,0/1/2/3} d p u , 0 / 1 / 2 / 3 表示 u u u 子树并向上传长为 0 / 1 / 2 / 3 0/1/2/3 0 / 1 / 2 / 3 的链的最大贡献。转移时背包 f i , 0 / 1 f_{i,0/1} f i , 0 / 1 记录上传长度 1 1 1 的儿子比上传长度 3 3 3 的多多少,以及上传长度 2 2 2 儿子的奇偶性。随机排列儿子,期望前缀和最大值是 O ( n ) O(\sqrt n) O ( n ) 级别的。
选 a i a_i a i 或 ( a i , b i ) (a_i,b_i) ( a i , b i ) 有被选过选 b i b_i b i 。容斥,取最大的 b l < a i b_l<a_i b l < a i 和 a r < b i a_r<b_i a r < b i ,( l , r ] (l,r] ( l , r ] 间选法固定,− d p l → d p r -dp_l\to dp_r − d p l → d p r 。
8.9
链加,树剖 dfn 区间加,分块维护。先减去 t i t_i t i ,维护 > 0 >0 > 0 的白点数量。
点分治,树上依赖性背包,d p i , j = max ( d p i + 1 , j − 1 + a r n k u , d p i + s i z r n k i , j ) dp_{i,j}=\max(dp_{i+1,j-1}+a_{rnk_u},dp_{i+siz_{rnk_i},j}) d p i , j = max ( d p i + 1 , j − 1 + a r n k u , d p i + s i z r n k i , j ) 。如果一定要选 r t , u rt,u r t , u ,就 O ( k ) O(k) O ( k ) 合并在前序遍历 dfn 序在 [ d f n u , n ] [dfn_u,n] [ d f n u , n ] 中的背包和后序遍历 dfn 序在 [ 1 , d f n u − s i z u ] [1,dfn_u-siz_u] [ 1 , d f n u − s i z u ] 的背包选出 k − d e p u k-dep_u k − d e p u 个数。当分治的区域小于 k k k 时停止,复杂度 O ( n k log n k ) O(nk\log\frac{n}{k}) O ( n k log k n ) 。
树形背包写成生成函数形式,f u ( x ) = ∏ v f v ( x ) + x f_u(x)=\prod_v f_v(x)+x f u ( x ) = ∏ v f v ( x ) + x 。分为重儿子和轻儿子贡献。分治 ntt 维护 g u ( x ) = ∏ v ∈ s o n ( u ) , v ≠ s u f v ( x ) g_u(x)=\prod_{v\in son(u),v\neq s_u} f_v(x) g u ( x ) = ∏ v ∈ s o n ( u ) , v = s u f v ( x ) ,所有轻儿子子树大小之和为 O ( n log n ) O(n\log n) O ( n log n ) 。重链上 f u ( x ) = g u f s u ( x ) + x f_u(x)=g_uf_{s_u}(x)+x f u ( x ) = g u f s u ( x ) + x 。只需要知道链顶的值,f a 1 ( x ) = g a 1 ( g a 2 ( ⋯ ( g a k + x ) ⋯ ) + x ) + x = ( ∑ i = 1 n − 1 x ∏ j = 1 i g a j ) + x f_{a_1}(x)=g_{a_1}(g_{a_2}(\dotsb(g_{a_k}+x)\dotsb)+x)+x=(\sum_{i=1}^{n-1}x\prod_{j=1}^i g_{a_j})+x f a 1 ( x ) = g a 1 ( g a 2 ( ⋯ ( g a k + x ) ⋯ ) + x ) + x = ( ∑ i = 1 n − 1 x ∏ j = 1 i g a j ) + x 。分治 ntt 维护前缀乘积之和和乘积。复杂度 O ( n log 3 n ) O(n\log^3 n) O ( n log 3 n ) 。
树形背包写成生成函数形式,f u ( x ) = ∏ v f v ( x ) + 1 f_u(x)=\prod_v f_v(x)+1 f u ( x ) = ∏ v f v ( x ) + 1 。特别的,需要求出重链上所有 f u ( x ) f_u(x) f u ( x ) 每项的系数和,即 g u ( x ) g_u(x) g u ( x ) 的区间乘积之和。分治 ntt 维护前缀乘积之和、后缀乘积之和、乘积和区间乘积之和。
8.10
cf rmj 暴毙!
模拟赛 T3。
t t t 时刻可能在 ( x , y ) (x,y) ( x , y ) 的是 t − x − y t-x-y t − x − y 出发的人。设 d p t , i , j dp_{t,i,j} d p t , i , j 表示前 t t t 个人会经过 ( i , j ) (i,j) ( i , j ) 几次,d p i , j = ⌈ d p i , j − 1 2 ⌉ + d p i − 1 , j 2 dp_{i,j}=\lceil \frac{dp_{i,j-1}}{2}\rceil+\frac{dp_{i-1,j}}{2} d p i , j = ⌈ 2 d p i , j − 1 ⌉ + 2 d p i − 1 , j 。差分看 d p t , x , y − d p t − 1 , x , y dp_{t,x,y}-dp_{t-1,x,y} d p t , x , y − d p t − 1 , x , y 是否为 1 1 1 。
模拟赛 T4。
线段树维护 max a i , ∑ a i , ∑ max j = l i a j , ∑ a i × max j = l i a j \max a_i,\sum a_i,\sum\max_{j=l}^i a_j,\sum a_i\times \max_{j=l}^i a_j max a i , ∑ a i , ∑ max j = l i a j , ∑ a i × max j = l i a j 。O ( log n ) O(\log n) O ( log n ) 线段树上二分的 pushup。区间加和区间覆盖。线段树上二分。
8.11
思路
有 6 6 6 个小于 14 14 1 4 的质数,设这 6 6 6 个质数的指数分别为 x 1 , ⋯ , x 6 x_1,\dotsb,x_6 x 1 , ⋯ , x 6 。a n s = ∑ ( ∏ i = 1 d ( x i + 1 ) ) ans=\sum (\prod_{i=1}^d (x_i+1)) a n s = ∑ ( ∏ i = 1 d ( x i + 1 ) ) 。状压这 6 6 6 个数,维护 v a l s = ∏ i = 1 6 ( x i × [ s 二 进 制 第 i 位 为 1 ] + [ s 二 进 制 第 i 位 为 0 ] ) val_s=\prod_{i=1}^6 (x_i\times [s二进制第 i位为1]+[s二进制第 i位为0]) v a l s = ∏ i = 1 6 ( x i × [ s 二 进 制 第 i 位 为 1 ] + [ s 二 进 制 第 i 位 为 0 ] ) 。当加入一个数时,某些 x i x_i x i 会加 d d d ,s s s 二进制第 i i i 位为 1 1 1 的 v a l s val_s v a l s 会从 s s s 的子集且一些二进制第 i i i 位为 0 0 0 的 t t t 的 v a l t val_t v a l t 转移来。
8.12
设 f i f_i f i 表示当前有 i i i 种状态的期望次数。f i = i + f i k m o d n k f_i=i+\frac{f_{ik\mod n}}{k} f i = i + k f i k m o d n 。转移有环,设 f i = a i f m + 1 + b i f_i=a_i f_{m+1}+b_i f i = a i f m + 1 + b i ,递推 a i , b i a_i,b_i a i , b i ,找到 a p = a m + 1 a_p=a_{m+1} a p = a m + 1 可以计算 f p f_p f p 真正的值,f 1 = a 1 × f p + b 1 f_1=a_1\times f_p+b_1 f 1 = a 1 × f p + b 1 。
让前缀最大值 a l a_l a l 代表整个区间,可以看做合并是将两个序列的前缀最大值排序。每次合并相当于在 n 2 \frac{n}{2} 2 n 处断开跨过序列中点的区间 [ l , r ] [l,r] [ l , r ] ,然后再重新按区间左端点的值排序。最多操作 n n n 次,最多 n n n 种区间。将询问离线,维护每次合并后的区间信息。建权值线段树表示前缀最大值 l l l 代表的区间长度之和。
按题意模拟,用栈建出二叉树,叶子节点是要填的值,非叶子是运算符。
判断一个叶子能贡献能填哪些数并最终成为答案,设 d p u , 0 / 1 , 0 / 1 dp_{u,0/1,0/1} d p u , 0 / 1 , 0 / 1 表示 u u u 子树内,u u u 处的值 ≤ a n s \le ans ≤ a n s 或 > a n s >ans > a n s ,n u m 0 num0 n u m 0 或 n u m 1 num1 n u m 1 最少为多少。根据 u u u 处的运算符分类讨论转移。对于每个叶子算限制,只与从根到 u u u 的 dp 值有关。可以发现放在一个叶子的答案是一个区间 [ n u m 0 + 1 , n − n u m 1 ] [num0+1,n-num1] [ n u m 0 + 1 , n − n u m 1 ] ,差分维护区间加,最后计算大于 0 0 0 的位置数。
8.13
合并连续段写为二元组 ( a i , t i ) (a_i,t_i) ( a i , t i ) 。每次找到区间最小值合并,如果 c i c_i c i 为奇数,一定不可能被跨过,写为 ( a i + 1 , t i 2 ) , ( i n f , 1 ) , ( a i + 1 , t i 2 ) (a_i+1,\frac{t_i}{2}),(inf,1),(a_i+1,\frac{t_i}{2}) ( a i + 1 , 2 t i ) , ( i n f , 1 ) , ( a i + 1 , 2 t i ) 。线段树维护。
8.14
模拟赛 T4。
将 a a a 数组差分,得到 2 2 2 倍连续段个数个 1 1 1 ,一次操作形如 a i a_i a i 和 a i + p r i m e a_{i+prime} a i + p r i m e 同时异或 1 1 1 。i i i 向 i + p r i m e i+prime i + p r i m e 连边,即为 0 → ∣ u − v ∣ 0\to |u-v| 0 → ∣ u − v ∣ 的最短路。由哥德巴赫猜想,1 0 7 10^7 1 0 7 内 > 4 >4 > 4 的偶数可以写成两个质数之和,2 = 0 + 5 − 3 2=0+5-3 2 = 0 + 5 − 3 ,4 = 0 + 7 − 3 4=0+7-3 4 = 0 + 7 − 3 ,所以所以 0 0 0 到偶数 i i i 的最短路为 2 2 2 。如果 i i i 为奇质数,最短路为 1 1 1 ;否则 i + 3 i+3 i + 3 为偶数,最短路为 3 3 3 。
现在要将 2 × n u m 2\times num 2 × n u m 个数两两分组,代价为 1 / 2 / 3 1/2/3 1 / 2 / 3 ,最小化代价和。当选完若干个代价为 1 1 1 的组时,奇偶性相同组的代价为 2 2 2 ,尽量匹配,代价为 3 3 3 的至多只有一组。所以最大化代价为 1 1 1 的组数。代价为 1 1 1 时 u , v u,v u , v 奇偶性不同,等于二分图最大匹配,网络流即可。复杂度 O ( n 2 n + x i ) O(n^2\sqrt n+x_i) O ( n 2 n + x i ) 。
概率转为方案数除以 2 n m 2^{nm} 2 n m 。由 LGV 引理,a n s = ∑ p ( − 1 ) σ ( p ) ∏ e ( i , p i ) ans=\sum_p(-1)^{\sigma (p)}\prod e(i,p_i) a n s = ∑ p ( − 1 ) σ ( p ) ∏ e ( i , p i ) 。e ( i , j ) e(i,j) e ( i , j ) 为 m m m 步选 j − x i j-x_i j − x i 步向前走。设 d p s , i dp_{s,i} d p s , i 表示选了 s s s 里的终止点,终止点 ≤ i \le i ≤ i 的方案数。
最大化曼哈顿距离,拆绝对值变成 4 4 4 个 x i , y i x_i,y_i x i , y i 独立的式子。只要匹配的点对选的同一种式子即可。最小费用最大流。
8.15
将矩阵和单位矩阵放在一起高斯消元,把左边的矩阵消为单位矩阵时右边的单位矩阵变成逆矩阵。
求 x x x 使得 n × n n\times n n × n 的矩阵 A x = C A^x=C A x = C 。
d e t ( A ) d e t ( B ) = d e t ( A B ) det(A)det(B)=det(AB) d e t ( A ) d e t ( B ) = d e t ( A B ) 。对 d e t ( A ) x ≡ d e t ( C ) ( m o d 1 0 9 + 7 ) det(A)^x\equiv det(C)\pmod{10^9+7} d e t ( A ) x ≡ d e t ( C ) ( m o d 1 0 9 + 7 ) 做 BSGS。对于 1 1 1 个可能的 x x x ,判断 x , x + m o d − 1 , x + 2 × ( m o d − 1 ) , ⋯ x,x+mod-1,x+2\times(mod-1),\dotsb x , x + m o d − 1 , x + 2 × ( m o d − 1 ) , ⋯ 。只有 1 0 10 m o d \frac{10^{10}}{mod} m o d 1 0 1 0 个 x x x ,复杂度 O ( m o d + 1 0 10 m o d n 3 ) O(\sqrt{mod}+\frac{10^{10}}{mod} n^3) O ( m o d + m o d 1 0 1 0 n 3 ) 。
8.17
a n s × n m = ∑ i = 1 n ( n − 1 ) a i b ( n − i + 1 ) c × v a l ( s k , i ) × n m − k ans\times n^m=\sum_{i=1}^n (n-1)^ai^b(n-i+1)^c\times val(s_k,i)\times n^{m-k}
a n s × n m = i = 1 ∑ n ( n − 1 ) a i b ( n − i + 1 ) c × v a l ( s k , i ) × n m − k
是关于 i i i 的 m + 1 m+1 m + 1 次多项式,维护 m + 2 m+2 m + 2 个点值插值。
对于每个连通块,二分图染色分为 a i a_i a i 和 b i b_i b i 个点。每次要么选 a i a_i a i 要么选 b i b_i b i ,要最小化 s u m sum s u m 和 n − s u m n-sum n − s u m 的差。bitset 维护背包,只有 O ( n ) O(\sqrt n) O ( n ) 个本质不同物品,相同的物品二进制优化。复杂度 O ( n n w ) O(\frac{n\sqrt n}{w}) O ( w n n ) 。
找出最小生成树。从小到大加入边,维护边双,一定能去到一个边双的最小权值的边。并查集维护每个点属于哪个边双,维护边双最浅的点,维护 1 → u 1\to u 1 → u 的最小边权 m n mn m n 和最小答案 a n s ans a n s 。
对于 ( u , v ) (u,v) ( u , v ) ,如果 u , v u,v u , v 已经属于同个边双,不会贡献。如果 ( u , v ) (u,v) ( u , v ) 是最小生成树中的边,如果 1 1 1 能新到一些点,bfs 拓展,赋值答案。否则将 u → v u\to v u → v 路径上的边双合并,设新边双最浅点为 p p p ,将 p p p 子树的所有点的 m n mn m n 和 a n s ans a n s 更新。如果更新到了非法的点,一定是没有被拓展到的,会在被拓展到时被覆盖。
8.19
是 k + 1 k+1 k + 1 次多项式,算 k + 2 k+2 k + 2 个点值插值。维护阶乘,∏ n − i \prod n-i ∏ n − i ,∏ ( n − k − 2 + i ) \prod (n-k-2+i) ∏ ( n − k − 2 + i ) 。如果 n − i n-i n − i 是奇数取负号。
等价于每种情况出现的概率之和。概率为连通块相邻的点被选都在连通块被选之前,即 i ! j ! ( i + j ) ! \frac{i!j!}{(i+j)!} ( i + j ) ! i ! j ! 。设 d p u , i , j dp_{u,i,j} d p u , i , j 表示根为 u u u ,子树内选 i i i 个点,有 j j j 个相邻的点的连通块的概率,O ( n 4 ) O(n^4) O ( n 4 ) 转移。
模拟赛 T3。
枚举 ⊕ x i \oplus x_i ⊕ x i 和 k k k 的最高相同的位 i i i ,i i i 位以下不用管。按位贪心确定 ⊕ y i \oplus y_i ⊕ y i ,将 2 i a 2 i 2^i\frac{a}{2^i} 2 i 2 i a 和 2 i b 2 i 2^i\frac{b}{2^i} 2 i 2 i b 拼在一起放入线性基中。复杂度 O ( n log 3 V ) O(n\log^3V) O ( n log 3 V ) 。
减少有用的 ( a i , b i ) (a_i,b_i) ( a i , b i ) 。如果 a i a_i a i 能被 a 1 , ⋯ , a i − 1 a_1,\dotsb ,a_{i-1} a 1 , ⋯ , a i − 1 表示出,那 b i b_i b i 消去对应的 b j b_j b j ,变成 ( 0 , b i ′ ) (0,b_i') ( 0 , b i ′ ) 不会造成影响。只有 O ( log V ) O(\log V) O ( log V ) 个 ( a i , b i ) (a_i,b_i) ( a i , b i ) 。复杂度 O ( n log V + log 3 V ) O(n\log V+\log^3 V) O ( n log V + log 3 V ) 。
8.20
从深度大往小维护线段树,启发式合并。u u u 和 v v v 处 [ l , r ] [l,r] [ l , r ] 差分维护加 1 1 1 ,lca 对应 u , v u,v u , v 的儿子处删除。每次修改后,线段树上二分极长非零连续段的左右端点,回答能回答的询问并删除询问。将询问挂在 r r r 上,线段树维护区间 l l l 的最大值,每次取出并删除。
a 1 a_1 a 1 一定是 2 x 3 y 2^x3^y 2 x 3 y ,且 y = 0 / 1 y=0/1 y = 0 / 1 。每次 x x x 或 y y y 减一或不变,dp 即可。
8.21
模拟赛 T2。
等于在唯一一个 p r e i = s u f i + 1 pre_i=suf_{i+1} p r e i = s u f i + 1 的地方计算答案。枚举分界点,设左边有 x x x 个 (
,l l l 个 ?
,右边有 y y y 个 )
,r r r 个 ?
,答案为 ∑ i = 0 l ( l i ) × ( r x + i − y ) × ( x + i ) = x × ∑ i = 0 l ( l i ) × ( r r − x + y − i ) + l × ∑ i = 0 l ( l − 1 i − 1 ) × ( r r − x + y − i ) = x ( l + r r + y − x ) + l ( l + r − x r − x + y − 1 ) \sum_{i=0}^l \binom l i\times \binom r{x+i-y}\times (x+i)=x\times \sum_{i=0}^l\binom l i\times \binom r{r-x+y-i}+l\times\sum_{i=0}^l \binom{l-1}{i-1}\times \binom{r}{r-x+y-i}=x\binom{l+r}{r+y-x}+l\binom{l+r-x}{r-x+y-1} ∑ i = 0 l ( i l ) × ( x + i − y r ) × ( x + i ) = x × ∑ i = 0 l ( i l ) × ( r − x + y − i r ) + l × ∑ i = 0 l ( i − 1 l − 1 ) × ( r − x + y − i r ) = x ( r + y − x l + r ) + l ( r − x + y − 1 l + r − x ) 。
模拟赛 T4。
建 trie dp,设 f u f_u f u 表示 u u u 子树内选点两两异或小于等于 x x x 的方案数,g u 1 , u 2 g_{u1,u2} g u 1 , u 2 表示 u 1 , u 2 u1,u2 u 1 , u 2 子树内选点两两异或小于等于 x x x 的方案数。分讨向下递归,每个点只经过一次。