2019 ICPC AsiaEast Continent Final

后期拉垮场(好像每次都是这样

#### A - City

枚举中点就好。效率: $O(nm)$ 。

#### B - Black and White

先考虑 $n+m$ 是 $2$ 的倍数。

故从左上到右下的对角线的条数有 $n+m-1$ 个。我们每两个分一组,把最后一个再加上长度为 $0$ 的黑色,这样就有 $n+m/2$ 组。

然后可以发现每一组的白-黑只会等于 $-1,0,1$ ,而且只有第 $2i$ 步会对第 $i$ 组有影响。在 $x+y=n$ 的下方的偶数步,向右是 $-1$ ,向上是 $0$ ;在 $x+y=n$ 的上方的偶数步,向右是 $0$ ,向上是 $1$ 。

于是先把 $k$ 加上 $n/2$ ,那就是要有 $k$ 步向上走的偶数步。而向上走一共有 $n$ 步,所以有 $k$ 步是在偶数步, $n-k$ 步是在奇数步。所以就是 $C((n+m)/2,k) \times C((n+m)/2,n-k)$ 。

对于 $n+m$ 不是 $2$ 的倍数,那就枚举最后一步怎么走就可以了。

#### C - Dirichlet $k$-th root

猜结论: $f=g^{inv(k)}$ ,居然过了。

#### D - Fire

设 $f_x$ 表示走到 $x$ ,走完这个子树且回到 $x$ 的最晚到达 $x$ 的时间。 $g_x$ 表示走到 $x$ 但最后不回来的最晚到达 $x$ 的时间。

对于 $f_x$ ,可以发现按照 $f_v+2siz_v$ 从小到大走最优。然后用 $f_v-2presiz_v-1$ 来更新 $f_x$ 。

对于 $g_x$ ,可以枚举最后走到哪个子树,然后剩下的也是按照上面的走法走就可以了。要预处理一下前缀和后缀最小值。

效率: $O(n\log n)$ 。

#### E - Flow

先算出最大流量。

每条路径要增加 $1$ 的流量的代价是知道的,贪心即可。

#### F - Game

不会。

#### G - Happiness

fjj写的模拟题。

#### H - King

随机选点,然后选择这个点左右的四个点作为 $king$ 串的相邻的点。跑 $20$ 次能找到的概率很大。

#### I - Moon

不会。

#### J - Permutation

考虑最小值一定不会被动,假设其位置为 $i$ ,那么 $[i-c,i-1]$ 和 $[i+1,i+c]$ 这些位置可以乱放。

考虑 $[1,i]$ 的次小值,如果出现在 $[i-c,i-1]$ 上,那么其实 $[i-2c,i-1]$ 这些位置是可以乱放的,除了次小值要在 $[i-c,i-1]$ 内,否则就是次小值不能动,它左右拓展 $c$ 个位置可以乱放,第三小值也一样。

于是我们可以发现,一个区间左右两端可以用若干个长度为 $c$ 的区间覆盖,表示这些位置除了某小值外可以乱放。

故设 $solve(l,r,xl,xr)$ 表示 $[l,r]$ 区间上,左边 $xl$ 个长度为 $c$ 的区间,右边 $xr$ 个长度为 $c$ 的区间可以乱放。那么如果 $(xl+xr) \times c > r-l+1$ ,那么这个区间内除了某小值剩下的都可以乱放。那么就找下一个某小值的位置,如果在左边的那 $xl$ 个区间内就可以让 $xl+1$ ,如果在右边的那 $xr$ 个区间内就让 $xr+1$ ,否则就递归为 $solve(l,x-1,xl,1),solve(x+1,r,1,xr)$ 。

用线段树维护最小值位置。效率 $O(n\log n)$ 。

#### K - All Pair Maximum Flow

平面图转对偶图后,怎么做不知道了quq

#### L - Travel

没看。

#### M - Value

考虑分组,然后状压即可。

原文地址:https://www.cnblogs.com/xjqxjq/p/15605226.html