最近组队赛有点拉跨,于是个人vp加训,写写题解。
A - Automatic Judge
签到,模拟。
Code
1 |
|
B - Building Shops
dp。先对每个pair按照位置排序,$f[i][j]$为考虑前$i$个点,上一次选在$j$时的答案,则有
$f[i][j]=min(f[i][j],f[i-1][j]+x[i]-x[j])(i!=j)$
$f[i][j]=min(f[i][j],f[i-1][j]+c[i])(i==j)$
最终答案为$max(\{f[n][1…n]\})$。
Code
1 |
|
C - Coprime Sequence
签到,处理出前后缀$\gcd$然后枚举删的位置。
Code
1 |
|
D - Deleting Edges
图论。考虑最终形成的是一棵以0为根的生成树,可以枚举最后形成的树中每个点连向父亲的那条边,对每个结点来说,删边方案是相互独立的(因为树上每个点的父亲唯一),乘起来就是最终答案。
Code
1 |
|
E - Easy Summation
签到,怎么做都行。
Code
1 |
|
F - Forgiveness
赛中没过,待补。感觉是个$O(10\times n\times\sqrt{n}\times\log{n})$的分块(应该没有$\log{n}$?)。
(后记:Claris出的防AK,据说要bitset搞搞)
G - Graph Theory
图论。考虑每个1和前面的2匹配,剩下的1两两匹配,剩下2或者n为奇数就是No。
Code
1 |
|
H - Happy Necklace
打表,数学。题意等价求长为n且两个0的距离大于2的01串的方案数,赛中人工打了个表(2,3,4,6,9,13),发现是$f[n]=f[n-1]+f[n-3]$,矩阵快速幂即可。
Code
1 |
|
I - Innumerable Ancestors
树论。结论:$k$个点中LCA深度最大的两点dfs序一定相邻(考虑反证法),所以对集合A,B按照dfs序排序并双指针处理。
Code
1 |
|
J - Judicious Strategy
博弈,打表。直接$O(n^3\log n)$预处理出所有子串及其权值,然后打表,记录一个$(win,A,B)$的三元组表示胜负状态和玩家分数,注意一个字符串中的同一个子串只算出现一次(如”aaaa”中,”aa”的出现次数为1)。
Code
1 |
|