机试康复训练R1:Codeforces Round #690 (Div. 3)
A. Favorite Sequence
题解:构造后的数组其实就是把构造前的数组的奇偶分开,奇数下标在前,偶数下标在后,同时讲偶数下标reverse一下。那么我们直接逆过程即可。时间复杂度$O(n)$
代码:
1 | ####3 4 5 2 9 1 1 |
B. Last Year’s Substring
暴力枚举前后加起来共四位,看看是否能组成2020即可。
1 | T=int(input()) |
C. Unique Number
二进制枚举从1-9,取满足条件的最小的即可,时间复杂度$O(2^9)$
1 | T=int(input()) |
D. Add to Neighbour and Remove
题目可以简化为将数组划分成若干和相等的区间,答案即为每段的长度减一求和。由于$n \leq 3000$,暴力枚举每段的大小即可。时间复杂度$O(n^2)$
1 | T=int(input()) |
E2. Close Tuples (hard version)
考虑将数组$a$排序,那么对于$ a_{i} $, 二分查找最远的 $a_{j}$ 使得 $a_{j}-a_{i}\leq k$ ,那么$a_{i}$的贡献即为$C(j-i,m-1)$,时间复杂度$O(nlog(n))$。
1 | /* |
F. The Treasure of The Segments
贪心的想,肯定是要找一个区间使得这个区间尽可能地和其他区间相交。枚举这个区间$[l,r]$,对于$r_{i}
1 | /* |