AGC010
AGC010
A
【过水已隐藏】
B
这题推完了还是不会/kk真的毒瘤
考虑每次会减少的总和是\(n(n+1)/2\),用原来的和除以这个可以得到操作次数\(m\)(不是整数无解)
再考虑相邻两个数\(a_i,a_{i+1}\),考虑它们的差,设为\(d=a_i-a_{i+1}\)。
一次操作有两种情况,一是\(\Delta a_i=-j,\Delta a_{i+1}=-j-1\),会让\(d\)增加1。
二是\(\Delta a_i=-n,\Delta a_{i+1}=-1\),会让\(d\)增加\(1-n\)。
考虑任意两个相邻数,有一个初始的\(d_0\),然后操作\(m\)次若有\(a\)个操作二会让\(d_0\)增加\(m-na\),为了让最终\(d_0\)恰好为\(0\)算出\(a=\frac{m+d_0}{n}\),不是整数或\(<0\)无解
还有一个限制就是\(\sum a\)应该是\(m\),不过这个肯定可以满足不用判
C
以每个点为LCA的点对可以根据已知信息算出(判无解),现在只需要在每个点判断是否能在这个点按要求配对救星了
就是有数组\(a\),\(m\)次选两个不同的\(i,j\),让\(a_i--,a_j--\),最终\(a\)非负
这个很好判,按照最大值和其它的和比较一下就能知道最多能配出多少对
D
后面全提姆博弈题= =zbl
一堆结论:
- 不考虑除\(\gcd\),如果开场有奇数个偶数是先手必胜,否则先手必败
- 必胜/必败态只和奇偶有关所以不必考虑\(\gcd\)是奇数的情况
- \(\gcd=1\)可推出至少一个奇数
- 如果一开始至少有一个\(a_i=1\)那么可以根据1直接确定答案了
- 如果有奇数个偶数的话可以操作一个偶数,然后会剩下\(2\)个奇数,之后先手可以一直操作保证\(\gcd\)为奇,根据2和3先手必胜
- 如果有至少\(2\)个奇数和偶数个偶数那么先手操作完之后转到5,先手必败
- 否则只可能只有\(1\)个奇数,和偶数个偶数,先手操作偶数会转到5,所以先手只能追逐梦想操作那个奇数,操作完后所有数至少除以\(2\),所以可以直接暴力递归下去
E
zbl*2
显然先建一个图,不互质的数之间连边,先手选完序列后边会定向(当然无环),后手只能按照这个拓扑排序
yyb:先手肯定想要拉一条字典序最长的链,所以dfs一遍就行了
我觉得很有道理。
F
zbl*3
枚举每个点,如果以它作为根,最优方法走到它时只会走到\(A\)比它小的节点,因为如果你这样走,对面可以直接移回来你就很尴尬。
所以到了一个点就不能回父亲(走过来就是因为这个点\(A\)更小)
然后都是抄yyb的我也不知道为什么。
本博客中博文均为原创,未经博主允许请勿随意转载,谢谢。