Educational Codeforces Round 83 补题
最近越打越菜,补题
Educational Codeforces Round 83 (Rated for Div. 2)
A. Two Regular Polygons
思路
没什么好说的,当$n$能被$m$整除的时候,$m$边形所有顶点一定可以与$n$边形重合。
代码
1 |
|
B. Bogosort
题意
给你一个数组,排列元素,使得任意一对元素$a_i$与$a_j$,$i−a_i≠j−
a_j$。输出任一可行解即可。
思路
当$i<j$时,如果令$a_i≥a_j$的话,不等式一定成立,所以从大到小排序即可。
代码
1 |
|
C. Adding Powers
题意
对于一个大小为$n$的全0数组,能否进行以下操作,使得这个数组变为目标数组
- 第$i$次操作时,可以对当前数组任意元素加上$k^i$,或者跳过
- 操作数$i$从$0$开始计数
思路
贪心,对于目标数组的每一个元素$a_i$,找到这个数用$k$的幂之和的表示方法,如果其中一个幂使用了两次,则为NO;若出现其他元素使用过的幂,则也为NO。
代码
1 |
|
D. Count the Arrays
题意
计算符合要求的数组的数量:
- 数组元素个数为$n$
- 每个元素范围$[1,m]$
- 数组内有且仅有一对元素相等
- 数组有一下标$i$,$i$及之前元素严格递增,$i$及其后元素严格递减。
思路
组合数学,套一个$Lucas$板子。
- 在$m$个数中挑出$n-1$个数,最大的数作为中间塔顶。
- 剩下的$n-2$个数挑出来一个,左右各分配一个。
- 其余的$n-3$个元素每个有左/右两种可能
所以答案为:
$C_m^{n-1}\times (n-2)\times 2^{n-3}$
代码
1 |
|
E. Array Shrinking
题意
一个长度为$n$的数组$a$,对于任一元素$a_i$,若有$a_i=a_{i+1}$,则可用$a_i+1$来替换这两个元素,求数组变化后的最小长度。
思路
读完题就感觉是区间DP,可惜我不会……
用$dp[l][r]$来表示区间$[l,r]$合并后的值,$dp[l][r]=0$时说明这一区间无法连续合并。
$f[i]$表示到下标$i$的合并后的最小长度。
代码
1 |
|
F、G估计不会,以后再补吧……