2019 ICPC Asia-East Continent Final

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

A - City

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

B - Black and White

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

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

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

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

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

C - Dirichlet k k k-th root

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

D - Fire

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

对于 f x f_x fx ,可以发现按照 f v + 2 s i z v f_v+2siz_v fv+2sizv 从小到大走最优。然后用 f v − 2 p r e s i z v − 1 f_v-2presiz_v-1 fv2presizv1 来更新 f x f_x fx

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

效率: O ( n log ⁡ n ) O(n\log n) O(nlogn)

E - Flow

先算出最大流量。

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

F - Game

不会。

G - Happiness

fjj写的模拟题。

H - King

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

I - Moon

不会。

J - Permutation

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

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

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

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

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

K - All Pair Maximum Flow

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

L - Travel

没看。

M - Value

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值