ABC比较简单就不再复述
D - Marking
简要题意 :给你一个长度为n nn的数组,下标为0 到 n − 1 0 到 n-10到n−1,最初指针位于0,重复执行n-1次操作,每次操作的定义为将当前指针加上d dd,如果该位置为空(未填数),否则我们向右找到第一个为空的位置( x = ( x + 1 ) (x = (x + 1) % n)(x=(x+1),然后把当前位置赋值,问第k kk次操作的找到的位置是哪个。
思路:
我们可以比较容易的发现,这道题考察了裴蜀定理,结论是会分成g c d ( n , d ) gcd(n , d)gcd(n,d)个环,每个环会走n / g c d ( n , d ) n / gcd(n,d)n/gcd(n,d)步,然后我们分类讨论在哪个环,然后位于哪个环的位置即可。
E - Make it Palindrome
简要题意 : 给你一个数组,问你所有的连续子数组形成回文串最少需要多少次修改,并输出总和。
思路 :我们考虑单独考虑每一对对答案的影响,我们考虑如果这一对不同,他对答案的影响是m i n ( i , n − j + 1 ) min(i , n - j + 1)min(i,n−j+1),然后我们对半考虑统计答案贡献即可,对半考虑离左右边界较近的点对答案的影响,比如( 5 , j ) (5 , j)(5,j)我们发现j jj为[ 5 , j − 5 + 1 ] [5 , j - 5 + 1][5,j−5+1]时答案是以左边界为准,所以可以比较好的维护答案。
代码
版权声明:本文为qq_52358098原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。