【Atcoder】AGC029 B-F简要题解

*B.Powers of two

日常想到二分图匹配匈牙利
考虑 x + y = 2 t x+y=2^t x+y=2t,则 max ⁡ ( x , y ) ≥ 2 t − 1 \max(x,y)\geq 2^{t-1} max(x,y)2t1,所以 x x x能匹配上的 ≤ \leq 它的数是唯一的。
对于数 x x x找到 > > >它的最小的 2 t 2^t 2t,能与它匹配的 ≤ \leq 它的数就是 2 t − x 2^t-x 2tx,贪心从大往小取即可。
(类似于树形结构,所有点父边是唯一的,贪心从叶子开始选)


C.Lexicographic constraints

想了一个每次按区间 a i a_i ai最小值划分讨论的算法。

实际上二分答案即可。


D.Grid game

分析(把边界也看做障碍):

  • 先手每次都必须移动
  • 假设已经进行了 x x x轮且都不能结束,若下一行 [ 1 , x + 1 ] [1,x+1] [1,x+1]列中有障碍,游戏就结束了

*E.Wandering TKHS

1 1 1作为根。

考虑点 x x x拓展到 1 1 1的过程,在未访问点中最小的为 f a x fa_x fax之前,显然所有 y ∈ s u b t r e e x y\in subtree_x ysubtreex,且 ( x , y ) (x,y) (x,y)路径上不存在 ≥ f a x \geq fa_x fax的点 y y y都会被遍历到。

设点 x x x到根过程中遍历的点集为 S x S_x Sx,发现 S x S_x Sx至于 1 → x 1\to x 1x路径中的所有前缀最大值 S S S有关,设点 x x x到根路径最大值为 m x x ( m x x ≠ x ) mx_x(mx_x\neq x) mxx(mxx̸=x),显然 S m x x ⊆ S m x x S_{mx_x}\subseteq S_{mx_x} SmxxSmxx,按 D x = S x − S m x x D_x=S_x-S_{mx_x} Dx=SxSmxx进行差分:

  • D x D_x Dx为所有 x x x可达的 < m x x <mx_x <mxx的点
  • x > m x x x>mx_x x>mxx,在计算 y ∈ s u b t r e e z , z ∈ s o n x y\in subtree_z,z\in son_x ysubtreez,zsonx,且 u p y = x up_y=x upy=x时,因为 D y D_y Dy包含所有 y y y可达的 < x <x <x的点,与 D x D_x Dx存在交集,所以多记一个 E z E_z Ez表示这个交集( z z z子树内所有 ( z → y ) < m x x (z\to y)<mx_x (zy)<mxx的点)。
  • 可以从 1 − n 1-n 1n加入点,并查集维护每个连通块。最后一遍求前缀和即 S x + = S m x x + D x − E z ( z ∈ s o n m x x , x ∈ s u b t r e e z ) S_x+=S_{mx_x}+D_x-E_{z}(z\in son_{mx_x},x\in subtree_z) Sx+=Smxx+DxEz(zsonmxx,xsubtreez)

*F.Construction of a tree

1 0 5 10^5 105网络流…

1 1 1为根,第 i i i个集合选出的边为 ( x i , f a x i ) (x_i,fa_{x_i}) (xi,faxi) x i x_i xi是一个 [ 2 , n ] [2,n] [2,n]的排列,考虑网络流求出任意一组 x i x_i xi的安排。
f a x i fa_{x_i} faxi的解可以贪心构造:初始将 1 1 1加入队列,若某个集合 i i i中有 1 1 1,则设 f a x i = 1 fa_{x_i}=1 faxi=1,并
x i x_i xi加入队列。
若无解,则必然存在某一步,队列中所有点与剩下未访问 x i x_i xi不连通——这时无法将未访问集合和队列中的点所在集合的 x i x_i xi互换,因为不存在未访问集合中不存在队列中的所有点,且始终无法连出父边——所以不存在其他 x i x_i xi的安排方式使其有解,任意求一组 x i x_i xi即可。

你可能感兴趣的:(妙,二分,贪心,atcoder)