--- tags: 题解,算法, title: ZZNU2020省赛练习2题解 --- # ZZNU2020省赛练习2 本组题目比上一组难度大一些,相对更接近省赛的难度。 ## A A\^B\^C 因为只需要求个位,那么我们当然也只关心A的个位,而A的个位不论是几,都有一个固定周期,周期如下: | 数字 | 周期长度 | 周期末位 | | ----- | ----- | -------- | | 0 | 1 | \[0\] | | 1 | 1 | \[1\] | | 2 | 4 | \[2,4,8,6\] | | 3 | 4 | \[3,9,7,1\] | | 4 | 2 | \[4,6\] | | 5 | 1 | \[5\] | | 6 | 1 | \[6\] | | 7 | 4 | \[7,9,3,1\] | | 8 | 4 | \[8,4,2,6\] | | 9 | 2 | \[9,1\] | 根据周期,假如为k,那么就是求$B^C \ mod \ k$,用快速幂模求解就可以了,得到的余数m再查出对应的末位。或者可以统一求$m=B^C \ mod \ 4$,再算$A^m \ mod \ 10$亦可。千万不要对B和C对10取模,那样必然会WA。 ## B RGB 带思维的暴力题。我们穷举这个三元组中间字符的位置,设为i,假如`s[i]`是字符G,如果我们不考虑距离的限制,那么就是i左边的R的个数乘以i右边的B的个数,再加上i左边的B的个数乘以i右边的R的个数,这时候再加上距离限制,我们只枚举距离相等的情况,那么就是总数减去距离相等的组数,这个枚举是$O(n)$的,所以,再加上暴力枚举i,总时间复杂度为$O(n^2)$ ## C 1维黑白棋 签到题,从左到右扫描看字符转变的次数就是答案 ## D 平均分组 二分答案+DP,先对原始数据排序并保存到数组`a`,设每个小组的最大差值是k,然后要验证这个k值能不能成功分组。要注意到,由于小组成员数<font color=red>至少是m个</font>,所以这里<font color=red>不能</font>直接贪心,定义`dp[i]`为前i个人里面,能成功分组的最后一个人的编号,那么`dp[i-m]+1`就是最近至少m人不分组的话,第一个人的编号,那么`a[i] - a[dp[i-m]+1] <= k`表示这些人可以分到一个新组,那`dp[i] = i`,否则`dp[i] = dp[i-1]`,最后判断`dp[n] == n`就表示能成功分组。最后根据能不能成功分组对k二分即可。本题是本组最难也最具欺骗性的题目。 ## E 一笔画 数据规模小,直接暴力DFS即可 ## F 中位数金字塔 思维构造题,关键点是你需要发现如果出现连续两个相同数字,那么在它们之上,就一定一直保持这两个数,于是,就可以直接构造以下序列 `x+2, x-1, x, x+1` 或者 `x-1, x, x+1, x-2` 于是它们的上一层就是 `?, x, x, ?` 具体根据x的大小,选择其中一个有效的即可,这4个数放中间,其它数就无所谓了,随便填。 ## 难易度排序 从易到难 CEABFD