AtCoder Grand Contest 044 简要题解

传送门

Pay to Win

考虑要么从 n k , \frac n k, 或者 n k + 1 \frac n k+1 变过来,其他一定不优
直接做即可

code

Joker

考虑每次暴力松弛是 O ( n 4 ) O(n^4) ,由于每个位置最多松弛 O ( n ) O(n)
所以复杂度是 O ( n 3 ) O(n^3)

code

Strange Dance

考虑从低位到高位建出一颗三叉树
那么操作分别是交换 1 , 2 1,2 儿子以及
0 , 1 , 2 0,1,2 依次换位,递归 0 0 儿子继续做
这两种

最后还原即可

code

Guess the Password

考虑如果询问 s s 得到 a n s = L s ans=L-s ,那么 s s 是原串的子序列
考虑先用 62 62 次询问出每个字母的出现次数
然后每次可以 A + B 1 |A|+|B|-1 合并两个子序列
这样即可在要求次数内得到原序列

code

Random Pawn

考虑先以最大值断环为链
考虑可以得到一个式子为 f i = max ( a i , ( f i 1 + f i + 1 ) / 2 b i ) f_i=\max(a_i,(f_{i-1}+f_{i+1})/2-b_i)
由于有一个 b -b 不好做
考虑找到一个 c c 满足 2 ( c i + b i ) = c i 1 + c i + 1 2(c_i+b_i)=c_{i-1}+c_{i+1}
那么令 g = f c , v = a c g=f-c,v=a-c ,那么可以得到 g i = max ( v i , ( g i 1 + g i + 1 ) / 2 ) g_i=\max(v_i,(g_{i-1}+g_{i+1})/2)
由于此时是链而非环,所以是可以得到合法的 c c
考虑令某些位置作为强制终止状态,也就是只在这些停止,否则继续游走
那么对于 i , i, 设左右最近的终止为 l , r l,r
那么可以得到 g i = ( r i ) f l + ( i l ) f r r l g_i=\frac{(r-i)f_l+(i-l)f_r}{r-l} ,而真正的 g g 还要和 v v max \max
也就是说将 ( i , v i ) (i,v_i) 看做一个点,那么最后就是一个凸包,每个 i i y y 加起来即为答案
所以只需要对 ( i , v i ) (i,v_i) 求一个上凸包就好了
注意这里得到的是 g g ,所以还要加上 c c

code

Name-Preserving Clubs

待填

猜你喜欢

转载自blog.csdn.net/qq_42555009/article/details/106332732
今日推荐