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

分析

代码

点击查看代码

posted @ 2024-02-01 22:32  ComistryMo  阅读(10)  评论(0)    收藏  举报