Codeforces-Round-980-(Div

[[Dashboard - Codeforces Round 980 (Div. 2) - Codeforces)](比赛链接)

A. Profitable Interest Rate

思路:a - x >= b - 2x, 变形一下得 2 * a - b, 最小为0 最大为a 即可

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
typedef pair<int, int> pii;


void solve() {
    ll a, b;
    cin >> a >> b;
    ll t = 2 * a - b;
    cout << min(a, max((ll)0, t)) << endl;;
}

int main() {
    int t;
    cin >> t;
    while(t--) solve();
    return 0;
}

B. Buying Lemonade

思路:一遍一遍的取,每次遍历取一个,然后为0,就白按一次,然后下次遍历就不按这个。

转换一下,先排个序,遍历就可,细节处理见代码。

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
typedef pair<int, int> pii; 

void solve() {
    ll n, k;
    cin >> n >> k;
    vector<ll> a(n);
    for(int i = 0; i < n; i++) cin >> a[i];
    sort(a.begin(), a.end());
    ll ans = k, pre = 0;
    for(int i = 0; i < n && k > 0; i++) {
        k -= (a[i] - pre) * (n - i);
        pre = a[i];
        if(k > 0) ans++;
        else break;
    }
    cout << ans << endl;
}

int main() {
    int t;
    cin >> t;
    while(t--) solve();
    return 0;
}

C. Concatenation of Arrays

思路:呃 是个贪心,大概猜一猜感觉是先按照较小值排序,较小值相同,按较大值排序。 证明的话(呃还是猜吧

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
typedef pair<int, int> pii;


void solve() {
    int n;
    cin >> n;
    vector<pii> a(n);
    for(int i = 0; i < n; i++) {
        int l, r;
        cin >> l >> r;
        a[i] = {l, r};
    }
    sort(a.begin(), a.end(), [&](auto a, auto b) {
        int mna = min(a.first, a.second);
        int mxa = max(a.first, a.second);
        int mnb = min(b.first, b.second);
        int mxb = max(b.first, b.second);
        if(mna == mnb) {
            return mxa < mxb;
        }
        return mna < mnb;
    });
    for(auto i : a) {
        cout << i.first << ' ' << i.second << ' ';
    }
    cout << '\n';
}

int main() {
    int t;
    cin >> t;
    while(t--) solve();
    return 0;
}

有能力了再来做D吧(

谢谢观看

posted @ 2025-07-21 16:54  _nilv  阅读(12)  评论(0)    收藏  举报