• Codeforces 1238G Adilbek and the Watering System 贪心


    Adilbek and the Watering System

    为什么这个题这么水, 感觉已经写过一万遍了, 还拿了一血。

    HDU - 5380是这道题的加强版呀。

    #include<bits/stdc++.h>
    #define LL long long
    using namespace std;
     
    const int N = (int)5e5 + 7;
     
    int n;
    LL m, c, c0;
     
    struct Friend {
        LL t, a, b;
        void read() {
            scanf("%lld%lld%lld", &t, &a, &b);
        }
        bool operator < (const Friend &rhs) const {
            return t < rhs.t;
        }
    } f[N];
     
    LL go() {
        LL cost = 0; LL have = 0;
        map<LL, LL> M;
        for(int i = 1; i < n; i++) {
            LL t = f[i].t, a = f[i].a, b = f[i].b;
            if(have < c && a) {
                LL add = min(a, c - have);
                M[b] += add;
                have += add;
                a -= add;
            }
            while(a && M.size() && M.rbegin()->first > b) {
                auto it = --M.end();
                LL add = min(a, it->second);
                it->second -= add;
                a -= add;
                if(it->second == 0) M.erase(it);
                M[b] += add;
            }
            LL dis = f[i + 1].t - f[i].t;
            while(dis && M.size()) {
                auto it = M.begin();
                LL need = min(dis, it->second);
                dis -= need;
                it->second -= need;
                have -= need;
                cost += 1LL * it->first * need;
                if(it->second == 0) M.erase(it);
            }
            if(dis) return -1;
        }
        return cost;
    }
    int main() {
        int T; scanf("%d", &T);
        while(T--) {
            scanf("%d%lld%lld%lld", &n, &m, &c, &c0);
            for(int i = 1; i <= n; i++) {
                f[i].read();
            }
            f[++n] = Friend{0, c0, 0};
            f[++n] = Friend{m, 0, 0};
            sort(f + 1, f + 1 + n);
            printf("%lld
    ", go());
        }
        return 0;
    }
     
    /*
    */
  • 相关阅读:
    GDUFE ACM-1050
    hdu-2020
    hdu-2055
    hdu-2734
    GDUFE ACM-1145
    GDUFE ACM-1127
    GDUFE ACM-1126
    GDUFE ACM-1125
    GDUFE ACM-1124
    GDUFE ACM-1123
  • 原文地址:https://www.cnblogs.com/CJLHY/p/11640311.html
Copyright © 2020-2023  润新知