第二届ACM协会算法校内赛 热身赛
A. 东方红红绿绿蓝
思路:
- 仔细审题,按规则模拟
时间复杂度:\(O(n)\)
1 | void solve() { |
B. 洛天依
思路:
- 枚举 \(a\) ,二分 \(b\),然后带入公式维护最大值
据说有暴力做法
时间复杂度:\(O(nlogn)\)
1 | void solve() { |
C. 珈百璃的小学妹
题目大意:
- 任选两个
index
然后,对其分别进行+3
和-1
操作
思路:
- 注意,可以选相同
index
,也就是意味着对一个位置+2
,所以我们只需要求奇偶的个数即可,如果奇数或者偶数mod 2
为0
,那么就是一个合法的序列
时间复杂度:\(O(n)\)
1 | void solve() { |
D. 动态规划热身
思路:
- 将所有的数按照右端点排序,然后二分距离当前这个数左端点最近的右端点,然后我们用
dp
来维护最大值的和
时间复杂度:\(O(nlogn)\)
1 | void solve() { |
E. Tiny snow
思路:
- 考虑三种情况即可
- 上面的最左边的两个端点和下面最右边的两个端点的距离和
- 上面的最右边的两个端点和下面最左边的两个端点的距离和
- 上面任意两个相邻的点到下面最左端的点和最右端的点的距离和
时间复杂度:\(O(n)\)
1 | void solve() { |
F. 社团嘉年华
思路:
- 除了
1
其他的就暴力枚举就好了
时间复杂度:\(O(n\sqrt n)\)
1 | void solve() { |
G. 要素过多
思路:
- 用 \(set\) 直接维护个数
时间复杂度:\(O(nlogn)\)
1 | void solve() { |