Codeforces Round 919 (Div. 2)
Codeforces Round 919 (Div. 2)
A Satisfying Constraints
分析
第三种情况拿集合维护一下就可以
代码
点击查看代码
void solve () {
int n; cin >> n;
int l = -INF, r = INF;
set<int> eq;
for (int i = 1; i <= n; i ++) {
int tp, x; cin >> tp >> x;
if (tp == 1) l = max(l, x);
else if (tp == 2) r = min(r, x);
else eq.insert(x);
}
if (r < l) cout << 0 << endl;
else {
int cn = r - l + 1;
for (auto x : eq) {
if (x >= l && x <= r) cn --;
}
cout << cn << endl;
}
return ;
}
B Summation Game
分析
删几个和最终的结果没有明显的关系,因此直接枚举加前缀和优化
代码
点击查看代码
void solve () {
int n, m, k; cin >> n >> m >> k;
vector<ll> a(n + 1), s(n + 1);
for (int i = 1; i <= n; i ++) cin >> a[i];
sort(a.begin() + 1, a.end(), greater<int>());
s[0] = 0;
for (int i = 1; i <= n; i ++) s[i] = s[i - 1] + a[i];
ll ans = -INF;
for (int i = 0; i <= m; i ++) {
ll nw = s[i] - s[min(i + k, n)];
if (i + k <= n) nw += s[n] - s[i + k];
ans = max(ans, nw);
}
cout << ans << endl;
return ;
}
C
分析
代码
点击查看代码
D
分析
代码
点击查看代码

浙公网安备 33010602011771号