Educational Codeforces Round 85 (Div. 2) 部分题解
Posted kanoon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Educational Codeforces Round 85 (Div. 2) 部分题解相关的知识,希望对你有一定的参考价值。
A. Level Statistics
题意
一个关卡有玩家的尝试次数和通关次数,按时间顺序给出一个玩家 $n$ 个时刻的数据,判断这些数据是否合理。
思路
- 通关次数不会多于尝试次数
- 后一时刻的尝试次数不会少于前一时刻
- 后一时刻的通关次数不会少于前一时刻
- 每次增加的通关次数不会多于增加的尝试次数
代码
#include <bits/stdc++.h> using namespace std; void solve() { int n; cin >> n; int p[n], c[n]; for (int i = 0; i < n; i++) { cin >> p[i] >> c[i]; } for (int i = 0; i < n; i++) { if (c[i] > p[i]) { cout << "NO" << " "; return; } } for (int i = 1; i < n; i++) { if (p[i] < p[i - 1] || c[i] < c[i - 1] || c[i] - c[i - 1] > p[i] - p[i - 1]) { cout << "NO" << " "; return; } } cout << "YES" << " "; } int main() { int t; cin >> t; while (t--) solve(); }
B. Middle Class
题意
已知 $n$ 个人财富值,可以不限次地选取一些人将他们的财富值汇总后平均分配,问最后最多有多少人财富值不少于 $x$ 。
思路
降序排列,分配多余的财富值,第一次不能凑齐 $x$ 时之前的人数即为答案。
代码
#include <bits/stdc++.h> using ll = long long; using namespace std; void solve() { int n, x; cin >> n >> x; int a[n]; for (int & i : a) cin >> i; sort(a, a + n, greater<int>()); ll extra = 0, ans = 0; for (int i : a) { if (i >= x) { extra += i - x; ++ans; } else if (extra >= x - i) { extra -= x - i; ++ans; } } cout << ans << " "; } int main() { int t; cin >> t; while (t--) solve(); }
C. Circle of Monsters
题意
有一圈怪兽,每个怪兽有 $a_i$ 点生命值,每射击 $1$ 次怪兽会掉 $1$ 点生命值,当怪兽死亡时会对下一个怪兽造成 $b_i$ 点伤害,要想消灭所有怪兽最少需要射击多少次。
思路
先求出至少需要射击多少次,即 $sum_{i=0}^{n-1}a[i] - b[i-1]$,然后枚举以哪只怪兽为起点,取总和的最小值即可。
代码
#include <bits/stdc++.h> #define pre(i) ((i - 1 + n) % n) using ll = long long; using namespace std; void solve() { int n; cin >> n; ll a[n], b[n]; for (int i =0 ; i < n; i++) { cin >> a[i] >> b[i]; } ll sum = 0; for (int i = 0; i < n; i++) { sum += max(0LL, a[i] - b[pre(i)]); } ll ans = 1e18; for (int i = 0; i < n; i++) { if (a[i] > b[i]) { ans = min(ans, sum + b[i]); } else { ans = min(ans, sum + a[i]); } } cout << ans << " "; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t; cin >> t; while (t--) solve(); }
以上是关于Educational Codeforces Round 85 (Div. 2) 部分题解的主要内容,如果未能解决你的问题,请参考以下文章
Educational Codeforces Round 7 A
Educational Codeforces Round 7
Educational Codeforces Round 90
Educational Codeforces Round 33