文章目录
- C - Boxes and Candies
- D - An Ordinary Game
- E - Cosmic Rays
- F - Rotated Palindromes
C - Boxes and Candies
Score : 300300300 points 贪心
每次比较相邻两个,贪心的给最后一个加即可。
代码
D - An Ordinary Game
Score : 500500500 points 博弈 + 结论
太蠢了,没看出来。
先说结论:
- 当sss的长度是奇数时,如果第一个和最后一个字母相同,那么先手必败,否则先手必胜。
- 当sss的长度是偶数,如果第一个和最后一个字母相同,那么先手必胜,否则先手必败。
下面解释一下
由于两头的字母不能动,并且我们最终状态一定是abababababab,或者abaabaaba这两种类型,不难发现这两个状态是必败态,考虑必胜到必败状态的转换,再考虑上奇偶性,就得出如上结论了。
代码
E - Cosmic Rays
Score : 600600600 points 最短路
很基础的一个建图题了,不多说。
代码
F - Rotated Palindromes
Score : 100010001000 points dpdpdp + 回文
题意:求长度为nnn并且aaa种的数在[1,k][1,k][1,k]内,并且aaa是一个回文的数的个数。
1≤n,k≤1e91\le n,k\le 1e91≤n,k≤1e9
首先不难得出一共可以产生m(n+1)/2m^{(n+1)/2}m(n+1)/2种回文串,将他们循环左移nnn次后产生多个字符串,不难发现有很多重复的,下面考虑去重。
考虑会产生重复的原因,可以发现跟循环节有关系。比如abbaabbaabbaabbaabbaabba,他循环右移到baabbaabbaabbaabbaabbaab就重复了,这个时候就应该停止,为什么呢?因为abbaabbaabba是他的最小循环节,回文串的最小循环节一定也是回文串,分以下两种情况:
- 当最小循环节的长度是偶数时,他的贡献就是∣s∣2\frac{|s|}{2}2∣s∣
- 当最小循环节长度为奇数时,他的贡献就是∣s∣|s|∣s∣
所以我们可以枚举nnn的约数,也就是最小循环节的长度,设dp[i]dp[i]dp[i]代表循环节长度是iii的时候的有多少串,当然需要去掉有更小循环节的情况,让后根据奇偶乘上iii或者i/2i/2i/2即可,复杂度大约是n+d2logn\sqrt n+d^2lognn+d2logn
代码