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