洛谷P4653

P4653 [CEOI 2017] Sure Bet

我去,第一次独立AC绿题
这b题好多Checkpoint

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
double ans = 0;
double cnta = 0;
double cntb = 0; 
int pa = 0, pb = 0;
double cost = 0;
vector<double>a(N, -0x3f3f3f3f);
vector<double>b(N, -0x3f3f3f3f);

bool cmp(const float a, const float b) {
    return a > b;
}

int main() {
    int n; cin >> n;
    for(int i = 0; i < n; i++) {
        cin >> a[i] >> b[i];
    }
    sort(a.begin(), a.begin()+n, cmp);
    sort(b.begin(), b.begin()+n, cmp);
    while(pa <= n && pb <= n) {//我不知道为什么不能是小于,用小于号会有一个checkpoint过不去
        if(cnta >= cntb) {
            cntb += b[pb];
            pb++;
        } else {
            cnta += a[pa];
            pa++;
        }
        cost = pa + pb;
        ans = max(ans, min(cnta - cost, cntb - cost));
    }
    cout << fixed << setprecision(4) << ans;
    return 0;
}
posted @ 2025-05-13 12:24  Chuan81  阅读(8)  评论(0)    收藏  举报