11 月 21 日
A. 树上填数
经过猜猜猜,发现最终方案肯定形如选定重心为根,某些子树内从上到下升,另外的子树内从上到下降.
将这些子树塞进背包里,根据经典结论,不同的物品只有 O ( n ) O(\sqrt{n}) O ( n ) 种,直接优化背包后枚举多少上升多少下降即可通过.
* B. 序列化树
首先先将序列排序,首先 1 1 1 肯定需要作为某个节点的父亲,故直接将其拿出一个.
然后考虑逐个为 2 ∼ n 2 \sim n 2 ∼ n 分配父亲.为了让权值和最大,我们肯定要选序列中尽量小的元素当作他们的父亲,也就是将排序后的 a 2 ∼ a n a_2 \sim a_n a 2 ∼ a n 作为 p 2 ∼ p n p_2 \sim p_n p 2 ∼ p n .此时可能会出现矛盾:如果有 a i > i a_i > i a i > i ,肯定没救了,故只需考虑 a i = i a_i = i a i = i 的情况.此时我们只能将其塞进 1 1 1 到 n n n 的链中.设这样的位置有 x x x 个,k < x k < x k < x 的情况均无解,剩下的情况贪心选边权即可.
! C. 两岸的猿
还没补.
11 月 28 日
A. 道路
假设我们已经对于所有点对 ( u , v ) (u, v) ( u , v ) 预处理出了最短路 d u , v d_{u, v} d u , v .对于边 ( u , v , w ) (u, v, w) ( u , v , w ) ,限制可以被表述为存在一个 ( p , q , t ) (p, q, t) ( p , q , t ) ,使得 min { d p , u + w + d v , q , d p , v + w + d u , q } ≤ t \min\{d_{p, u} + w + d_{v, q}, d_{p, v} + w + d_{u, q}\} \le t min { d p , u + w + d v , q , d p , v + w + d u , q } ≤ t .
那个 min \min min 可以不管,将点对翻转后再做一遍即可.考虑对于每条边 ( u , v , w ) (u, v, w) ( u , v , w ) ,如何快速判断对于所有 ( p , q , t ) (p, q, t) ( p , q , t ) ,有 d p , u + w + d v , q ≤ t d_{p, u} + w + d_{v, q} \le t d p , u + w + d v , q ≤ t .将限制变形后可以得到 w ≤ t − d p , u − d v , q w \le t - d_{p, u} - d_{v, q} w ≤ t − d p , u − d v , q .不妨预处理 f p , v f_{p, v} f p , v 代表对于所有 ( p , q , t ) (p, q, t) ( p , q , t ) ,max { t − d v , q } \max\{t - d_{v, q}\} max { t − d v , q } ,这样在判断时枚举 p p p ,判定 max { f p , v − d p , u } ≥ w \max\{f_{p, v} - d_{p, u}\} \ge w max { f p , v − d p , u } ≥ w 即可.
时间复杂度 O ( n 3 ) O(n^3) O ( n 3 ) .
B. 颁奖
不妨在点 u u u 下面挂个虚点 u ′ u^\prime u ′ ,u u u 到 u ′ u^\prime u ′ 的边权是 a u a_u a u .然后我们发现,最终的点一定是加虚点后图的直径的中点.线段树维护直径,然后倍增跳一下即可.
! C. 红石灯
还没补.
12 月 5 日
* A. 做题掉坑
令 P ( x ) P(x) P ( x ) 表示第 x x x 天掉进坑里的概率,Q ( x ) Q(x) Q ( x ) 表示前 x x x 天都没掉进坑里的概率,有 P ( x ) = Q ( x − 1 ) − Q ( x ) P(x) = Q(x - 1) - Q(x) P ( x ) = Q ( x − 1 ) − Q ( x ) .
答案由下式给出:
∑ i = 1 m i P ( i ) = ∑ i = 1 m i ( Q ( i − 1 ) − Q ( i ) ) = ∑ i = 1 m i Q ( i − 1 ) − ∑ i = 1 m i Q ( i ) = ∑ i = 0 m − 1 ( i + 1 ) Q ( i ) − ∑ i = 1 m i Q ( i ) = ∑ i = 1 m − 1 ( i + 1 ) Q ( i ) − ∑ i = 1 m − 1 i Q ( i ) = ∑ i = 1 m − 1 Q ( i ) \begin{aligned}
\sum_{i = 1}^m iP(i)
&= \sum_{i = 1}^m i(Q(i - 1) - Q(i)) \\
&= \sum_{i = 1}^m iQ(i - 1) - \sum_{i = 1}^m iQ(i) \\
&= \sum_{i = 0}^{m - 1} (i + 1)Q(i) - \sum_{i = 1}^m iQ(i) \\
&= \sum_{i = 1}^{m - 1} (i + 1)Q(i) - \sum_{i = 1}^{m - 1} iQ(i) \\
&= \sum_{i = 1}^{m - 1} Q(i)
\end{aligned}
i = 1 ∑ m i P ( i ) = i = 1 ∑ m i ( Q ( i − 1 ) − Q ( i ) ) = i = 1 ∑ m i Q ( i − 1 ) − i = 1 ∑ m i Q ( i ) = i = 0 ∑ m − 1 ( i + 1 ) Q ( i ) − i = 1 ∑ m i Q ( i ) = i = 1 ∑ m − 1 ( i + 1 ) Q ( i ) − i = 1 ∑ m − 1 i Q ( i ) = i = 1 ∑ m − 1 Q ( i )
考虑求出 Q ( i ) Q(i) Q ( i ) .由于我们不能走到 k k k ,故可以将 k k k 转到最前面,然后环就变成链了.不妨令转完的位置分别为 a 0 , a 1 , ⋯ , a m − 1 a_0, a_1, \cdots, a_{m - 1} a 0 , a 1 , ⋯ , a m − 1 ,然后再令 a m = n a_m = n a m = n .设 f i , j f_{i, j} f i , j 表示 [ 1 , a i ) [1, a_i) [ 1 , a i ) 这个区间内被随到了 j j j 次的概率,转移枚举 [ a i − 1 , a i ) [a_{i - 1}, a_i) [ a i − 1 , a i ) 这个区间被随到了多少次,有
f i , j ← f i − 1 , j − k × ( k j ) × ( a i − a i − 1 n ) k f_{i, j} \leftarrow f_{i - 1, j - k} \times \binom{k}{j} \times \left(\frac{a_i - a_{i - 1}}{n}\right)^k
f i , j ← f i − 1 , j − k × ( j k ) × ( n a i − a i − 1 ) k
答案即为 ∑ i < m f m , i \sum\limits_{i < m} f_{m, i} i < m ∑ f m , i .
* B. 攀比之心
打表可以发现,Bob 胜的充要条件是直径的中点过 1 1 1 .
考虑对这样的连通块计数.不妨先计算出 f u , i f_{u, i} f u , i 表示以 u u u 为根的子树,最深的节点深度为 i i i 的连通块的方案数,直径终点过 1 1 1 的方案可以通过简单容斥得出.
转移考虑合并 v v v 的子树:
f u , i = f u , i × ∑ j + 1 ≤ i f v , j + f v , i − 1 × ∑ j + 1 ≤ i f u , j f_{u, i} = f_{u, i} \times \sum_{j + 1 \le i} f_{v, j} + f_{v, i - 1} \times \sum_{j + 1 \le i} f_{u, j}
f u , i = f u , i × j + 1 ≤ i ∑ f v , j + f v , i − 1 × j + 1 ≤ i ∑ f u , j
第二部分显然可以长剖优化,第一部分注意到 i i i 大于 v v v 子树内最大深度的部分的转移形如乘上一个常数,可以通过打标记解决,然后就 O ( n ) O(n) O ( n ) 了.
注意长剖优化 DP 时,整个过程做完之后只有长链顶的 DP 数组是对的,而我们容斥需要用到 1 1 1 的所有儿子的 DP 数组,故需先备份 1 1 1 的长儿子的 DP 数组.
! C. 渡船开摆
还没补.
12 月 7 日
! A. 魔法树
正解暂时不会补,这里记录一下 80 分做法.
不妨称原图中原有的边为 1 边,原图中不存在的边为 0 边.容易发现,对于 n n n 阶完全图的一个生成树,T T T 次操作后得到它的概率只和其中的 1 边数量有关,这个可以简单递推实现.问题转化为计算包含恰好 k k k 条 1 边的生成树个数.
有一个显然的做法是,令 1 边的边权为 x x x ,0 边的边权为 1 1 1 ,然后跑矩阵树定理可以得到一个 n − 1 n - 1 n − 1 次多项式 F ( x ) F(x) F ( x ) ,显然恰好包含 k k k 条 1 边的生成树个数为 [ x k ] F ( x ) [x^k] F(x) [ x k ] F ( x ) .然而我们不可能直接计算 F ( x ) F(x) F ( x ) ,考虑一些数值方式!我们给 x x x 随机带入 n n n 个值,可以得到关于各项系数的 n n n 个方程,直接解方程即可.
* B. 排列
先建出树来,不妨令当前节点为 p p p ,左右儿子分别为 l l l 和 r r r .
若我们确定了 a p , a l , a r a_p, a_l, a_r a p , a l , a r 的排列方式,左右子树就变成了独立的子问题,可以递归解决.考虑如何确定排列方式.
若 a p a_p a p 是最小值,无需进行任何交换.
若 a l a_l a l 是最小值,此时只能交换 a p a_p a p 和 a l a_l a l .
若 a r a_r a r 是最小值,此时可以将 a p a_p a p 和 a r a_r a r 以任意顺序放在 l l l 和 r r r 上.
看起来很难办!但我们可以爆搜确定较小值放 l l l 还是 r r r 上能够排到序列中更靠前的位置.分析一下这个爆搜的状态数,每个节点可能要检查的值只可能来自其祖先链或兄弟节点,故总状态数 O ( n log n ) O(n \log n) O ( n log n ) .记忆化即可.
! C. 上升子序列
还没补.
12 月 12 日
* A. 马吉克
若有两线段 i i i 和 j j j 满足 l i < l j < r i < r j l_i < l_j < r_i < r_j l i < l j < r i < r j ,那么 l j l_j l j 和 r i r_i r i 就不能同时选.我们发现这些有交的区间限制了答案中某些点不能同时出现.这启发我们将满足上述条件的 l j l_j l j 和 r i r_i r i 建边,答案即为图中最大独立集大小.有注意到我们只有某些左端点到某些右端点的边,故这是一个二分图.
然而暴力建图有 O ( n 2 ) O(n^2) O ( n 2 ) 条边,Dinic 跑不动,观察到将区间 i i i 当作点对 ( l i , r i ) (l_i, r_i) ( l i , r i ) 拍到平面上之后,建图的限制想到于一个 3-side 矩形.可持久化线段树优化建图即可.
* B. 卡勒尔英
好像是某场 xcpc 的原,之前在 QOJ 上看到过.
先将边反向,操作变成沿着边传递颜色.反向后的图显然是一个外向基环树.树的部分是容易的,DP 一遍即可.具体地,设 f u , i f_{u, i} f u , i 表示 u u u 子树内,u u u 被修改 i i i 次的最大收益,转移显然.
现在考虑如何处理 s s s 在环上的情况.发现环上点的修改次数相差不会超过 2 2 2 ,故可以枚举修改次数合并 DP 数组.注意特判环长 ≤ 2 \le 2 ≤ 2 的情况,此时上述结论是错的.
! C. 睿克谈勾
好他妈难写.丢个 原题链接 跑路了.
12 月 19 日
A. 路径
令 u u u 的父亲为 f a u \mathrm{fa}_u f a u ,注意到若对权值做树上差分,令 a u ← a f a u − a u a_u \leftarrow a_{\mathrm{fa}_u} - a_u a u ← a f a u − a u ,那么询问相当于求路径上的最大子段和,倍增即可.
一开始忽略了信息的可并性,弄出了个要历史最值的逆天做法.
* B. 迷失
A k u , v {A^k}_{u, v} A k u , v 的含义是 u → v u \to v u → v 是否存在长度为 k k k 的路径.对于一个强连通分量,假设经过了足够长的时间,我们显然能够使用环内的任意一个环来增广我们的路径,故若原图强联通,d d d 就是其中所有环长的 gcd.对于非强连通图,求得每个强连通分量的答案后取 lcm 即可.
然后就可以二分 k k k 了.使用逐位确定答案的写法,时间复杂度 O ( n 3 log V ) O(n^3 \log V) O ( n 3 log V ) .注意到最后一个包不用求 k k k ./cf
C. 树
垃圾.
要求子区间权值和,套上历史和,问题转化为对 r r r 做扫描线时,对于所有 l ≤ r l \le r l ≤ r ,维护出区间 [ l , r ] [l, r] [ l , r ] 的权值.
权值可以分成两部分,第一部分是连通块到根的路径并的大小,这个可以通过经典的 lct 配合扫描线的技巧维护,更新是区间加的形式.第二部分是连通块构成虚树的根的深度,这部分要扣掉,用个类似单调栈维护所有 l ≤ r l \le r l ≤ r 且区间 [ l , r ] [l, r] [ l , r ] 的 lca 和区间 [ l + 1 , r ] [l + 1, r] [ l + 1 , r ] 的 lca 不同的点,更新是区间覆盖的形式.
再写个支持区间加区间覆盖区间历史和的线段树即可.
12 月 26 日
A. 魔法宝石
分治即可.
B. 商人
A298637 .
* C. 首都
先建圆方树,u → v u \to v u → v 会被 w w w 拦住当且仅当 w w w 是必经点,即圆方树上 u → v u \to v u → v 的路径经过 w w w .
然后进行一个贡献的拆,答案可写成如下形式
n k − min r { ∑ u w u d i s t ( u , r ) } nk - \min_r \left\{ \sum_u w_u \mathrm{dist}(u, r) \right\}
n k − r min { u ∑ w u d i s t ( u , r ) }
其中 d i s t ( u , v ) \mathrm{dist}(u, v) d i s t ( u , v ) 的含义是圆方树上 u → v u \to v u → v 路径上的圆点数,含义是先让所有点都贡献,然后枚举首都 r r r ,对于节点 u u u ,防御工事选在 u → r u \to r u → r 路径上的所有圆点都会导致贡献被减去一次.
考虑如何求后面那个 min \min min .通过观观观察察察可以发现,r r r 只会选到关键点构成的虚树上.故考虑换根 DP 出每个点作为 r r r 时 min \min min 里的东西,然后分类讨论选在点上还是边上,对所有情况取 min \min min .注意 r r r 不能选到方点上.
1 月 2 日
* A. 景点游览
没做出来,鉴定为唐.
预处理 m x i \mathrm{mx}_i m x i 表示 i i i 能到的编号最大的点,m n i \mathrm{mn}_i m n i 表示 i i i 能到的编号最小的点.一个区间 [ l , r ] [l, r] [ l , r ] 合法,当且仅当 ∀ i ∈ [ l , r ] , l ≤ m n i , r ≥ m x i \forall i \in [l, r], l \le \mathrm{mn}_i, r \ge \mathrm{mx}_i ∀ i ∈ [ l , r ] , l ≤ m n i , r ≥ m x i ,容易分治统计.
* B. 人生画卷
我草,申必双射题.
显然连续段没有用,故缩起来.然后不知道怎么就能发现缩完后有 i i i 种颜色的序列和有 i i i 个右儿子的二叉树能构成双射!具体而言,我们将序列中和最后一个位置的颜色相同的位置扒出来,当作一条左链,然后剩下的部分递归构造,挂到右侧的右儿子上.
然后 n n n 个节点,i i i 个右儿子的二叉树数目是 A001263 .证明不会!那么答案由下式给出:
∑ i 1 i ( n i − 1 ) ( n − 1 i − 1 ) × ( m i ) i ! \sum_i \frac{1}{i} \binom{n}{i - 1} \binom{n - 1}{i - 1} \times \binom{m}{i} i!
i ∑ i 1 ( i − 1 n ) ( i − 1 n − 1 ) × ( i m ) i !
* C. 博弈游戏
有一个费用流建模就是,建立源点 S S S ,汇点 T T T 和 n n n 个代表选取的数的点 u i u_i u i ,建边 ( S , u i , 1 , a i ) (S, u_i, 1, a_i) ( S , u i , 1 , a i ) ,( u i , u i + 1 , ∞ , 0 ) (u_i, u_{i + 1}, \infty, 0) ( u i , u i + 1 , ∞ , 0 ) ,( u i , T , 1 , b i ) (u_i, T, 1, b_i) ( u i , T , 1 , b i ) ,最小费用最大流即为答案.
显然直接建图跑寄了,由于费用流刻画的问题关于流量是凸的,故直接 wqs 二分,问题转化为求最小费用可行流.考虑加入 u i u_i u i 新增的增广路对答案的影响.我们有如下三种增广路:
S → u i → T S \to u_i \to T S → u i → T ,直接计算即可.
S → u j → ⋯ → u i → T S \to u_j \to \cdots \to u_i \to T S → u j → ⋯ → u i → T ,即选某个未用过的 a j a_j a j ,选取 a j a_j a j 和 b i b_i b i .
T → u j → ⋯ → u i → T T \to u_j \to \cdots \to u_i \to T T → u j → ⋯ → u i → T ,即选某个用过的 b j b_j b j ,去掉 b j b_j b j 选取 b i b_i b i .
用两个堆分别维护没用过的 a i a_i a i 和用过的 b j b_j b j 即可.
总复杂度 O ( n log n log V ) O(n \log n \log V) O ( n log n log V ) .
1 月 9 日
* A. 序列
给我唐完了.
注意到任意一种操作序列都可以写成先加后除的形式.先枚举除的次数 k k k ,若我们一开始加了 c c c ,c c c 的低 k k k 位可以塞到某些除法后做,这部分代价是低 k k k 位的 popcount;c c c 的高位必须直接加,这部分代价是 ⌊ c / 2 k ⌋ \lfloor c / 2^k \rfloor ⌊ c / 2 k ⌋ .注意到关键的(即给全体加后会导致某个 ⌊ ( a i + c ) / 2 k ⌋ \lfloor (a_i + c) / 2^k \rfloor ⌊ ( a i + c ) / 2 k ⌋ 加一的)低 k k k 位数只有 n n n 个,故考虑将高低位分开做.
从小到大枚举低 k k k 位关键的值,记 a ′ i {a^\prime}_i a ′ i 表示加了低 k k k 位后 a i a_i a i 的取值,显然只可能是 ⌊ a i / 2 k ⌋ \lfloor a_i / 2^k \rfloor ⌊ a i / 2 k ⌋ 和 ⌊ a i / 2 k ⌋ + 1 \lfloor a_i / 2^k \rfloor + 1 ⌊ a i / 2 k ⌋ + 1 ,且枚举的过程中改变量是 O ( n ) O(n) O ( n ) 的.考虑 c c c 高位取 x x x 时,最后这一部分代价就是 x + ∑ ∣ a ′ i + x − b i ∣ x + \sum |{a^\prime}_i + x - b_i| x + ∑ ∣ a ′ i + x − b i ∣ ,显然取序列 { b i − a ′ i } \{b_i - {a^\prime}_i\} { b i − a ′ i } 的中位数最优.注意到每次改变 a ′ a^\prime a ′ 只会给这个序列中的某些元素减 1 1 1 ,且每个元素最多减去一次,故可能取的值只有原本的中位数及其减 1 1 1 ,弄两个树状数组就能算了.
还有一个要最小化的量是一段区间 [ l , r ] [l, r] [ l , r ] 内的 popcount 最小值,这个分讨是否包含某个 2 k 2^k 2 k 和去除 l l l 和 r r r 的二进制 lcp 后 l l l 是否全 0 0 0 即可.
! B. 梦
还没补.
* C. 夏虫
设 f i f_i f i 表示有多少个 x x x 满足 c c c 是区间 [ 1 , i − 1 ] [1, i - 1] [ 1 , i − 1 ] 的某个后缀最值或 [ i + 1 , n ] [i + 1, n] [ i + 1 , n ] 的某个前缀最值.问题转化为支持交换相邻元素,对区间的 f f f 求和.
先考虑如何计算出原序列的 f f f ,对于 a i a_i a i ,设 L i L_i L i 表示最大的 j j j 满足 j < i , a j > a i j < i, a_j > a_i j < i , a j > a i ,R i R_i R i 表示最小的 j j j 满足 j > i , a j > a i j > i, a_j > a_i j > i , a j > a i .不妨令 a L i < a R i a_{L_i} < a_{R_i} a L i < a R i ,那么有 f i = f L i + 1 f_i = f_{L_i} + 1 f i = f L i + 1 ,其他情况类似.
考虑交换 a x a_x a x 和 a x + 1 a_{x + 1} a x + 1 对 f f f 造成的影响.对于 i < x i < x i < x ,若 max j = i x − 1 a j < a x \max\limits_{j = i}^{x - 1} a_j < a_x j = i max x − 1 a j < a x ,那么交换后 f i f_i f i 会减 1 1 1 ,i > x i > x i > x 的情况类似,可以用线段树维护区间加.再维护一个 a a a 的最值即可在线段树上二分找到目标区间.x x x 和 x + 1 x + 1 x + 1 位置重算即可.
1 月 16 日
A. 早八
显然翻转颜色连续段的次数是 O ( n ) O(n) O ( n ) 的,考虑每次翻转连续段对答案的贡献.
以将 [ L , R ] [L, R] [ L , R ] 从 1 1 1 变成 0 0 0 为例,我们找到 L L L 前最后一个 1 1 1 的位置 p p p 和 R R R 后最后一个 1 1 1 的位置 q q q ,那么 [ p + 1 , q − 1 ] [p + 1, q - 1] [ p + 1 , q − 1 ] 的和 [ L , R ] [L, R] [ L , R ] 有交的子区间都寄了,限制可写作 p < l i ≤ R , L ≤ r i < q p < l_i \le R, L \le r_i < q p < l i ≤ R , L ≤ r i < q ,是静态二维数点,用主席树即可.
* B. 派对
没写完代码. \Huge\color{red}\text{没写完代码.} 没写完代码.
什么 b 东西.
首先由于有 a x ≠ a y , b x ≠ b y a_x \not= a_y, b_x \not= b_y a x = a y , b x = b y ,故每种选择方案都可以互不相同地对应到一个排列.
考虑对合法排列计数.通过打表可以发现,合法排列满足 p i ≤ i + 2 p_i \le i + 2 p i ≤ i + 2 .然后对于全体 p i ≤ i + 2 p_i \le i + 2 p i ≤ i + 2 的排列,不合法的位置只会相邻出现.那我们可以设 f i , 0 / 1 / 2 f_{i, 0 / 1 / 2} f i , 0 / 1 / 2 分别表示 p i ≤ i p_i \le i p i ≤ i ,p i = i + 1 p_i = i + 1 p i = i + 1 ,p i = i + 2 p_i = i + 2 p i = i + 2 的方案数,转移考虑 p i p_i p i 能选什么:
若 [ 1 , i − 1 ] [1, i - 1] [ 1 , i − 1 ] 中有被 ban 的值,且 i i i 位置要求填 ≤ i − 1 \le i - 1 ≤ i − 1 的数字(不做要求视作要求填 0 0 0 ),那么若 p i − 1 ≤ i p_{i - 1} \le i p i − 1 ≤ i ,那么我们无法选出满足条件的值,故舍去这种情况.剩下情况总能找到唯一的一个值选取,有转移 f i , 0 ← f i − 1 , 2 f_{i, 0} \leftarrow f_{i - 1, 2} f i , 0 ← f i − 1 , 2 .
若 [ 1 , i ] [1, i] [ 1 , i ] 中有被 ban 的值,且 i i i 位置要求填 ≤ i \le i ≤ i 的数字,那么有转移 f i , 0 ← f i − 1 , 0 + f i − 1 , 1 f_{i, 0} \leftarrow f_{i - 1, 0} + f_{i - 1, 1} f i , 0 ← f i − 1 , 0 + f i − 1 , 1 .
剩下两种状态的转移判定是否违背限制即可,注意 p i − 1 p_{i - 1} p i − 1 不能填 i + 1 i + 1 i + 1 ,否则不合法.
! C. 间谍
摆了.
1 月 23 日
A. 郊游
答案要求异或和,故考虑拆位统计每个位置上 1 1 1 的出现次数.
发现题目中定义的适配度为二进制 lcs 的长度,故考虑建出 trie 来,每次会选择 lca 最低的两个点匹配,而 a ⊕ b − 1 a \oplus b - 1 a ⊕ b − 1 可看作将 lcs 全都置 1 1 1 ,lcs 开始位置的前一位置 0 0 0 ,剩下位对异或和的贡献独立(n n n 位二进制数异或可看作 ( Z / 2 Z ) n (\Z/2\Z)^n ( Z / 2 Z ) n 求和),故可分开计算.
考虑在 trie 上计算贡献.对于当前节点 u u u ,设 0 0 0 儿子为 l l l ,1 1 1 儿子为 r r r .若 l l l 和 r r r 子树内数的数目均可被 2 2 2 整除,那么肯定会在内部匹配,对当前位贡献匹配对数个 1 1 1 ;若都不能被 2 2 2 整除,那么可将多的那一个拿出来互相匹配,此时这一对对当前位的贡献为 0 0 0 ,剩下对的贡献于前一种情况类似;只有一个多了的话,无法匹配,若那个数当前位为 1 1 1 则对当前位贡献 1 1 1 .
发现计算只和子树大小有关,故可动态维护答案.
! B. 雪仗
* C. 闪耀
这不是我们山东省队集训 2022 D1T2 吗.