囚柱
查看原帖
囚柱
1161278
happy_lion楼主2024/10/8 18:51
#include<bits/stdc++.h>
using namespace std;
priority_queue<double,vector<double> > q;
struct oil{
    double d;
    double p;
}a[10];
bool cmp(oil x,oil y) {
    return x.d < y.d;
}
int main() {
    double d1,c,d2,p;
    int n;
    cin >> d1 >> c >> d2 >> p >> n;
    if (d2 == 0) {
        cout << "No Solution";
        return 0;
    }
    for (int i=1;i<=n;i++) {
        cin >> a[i].d >> a[i].p;
    }
    sort(a+1,a+n+1,cmp);
    double ans = 0.0;
    double you = 0.0;
    a[n+1].d = d1;
    ans += p*c;
    you = c;
    you -= a[1].d/d2;
    q.push(p);
    for (int i=1;i<=n;i++) {
        if (q.size() && q.top() > a[i].p) {
            ans -= you*q.top();
            you = 0;
            q.pop();
        }
        ans += (c-you)*a[i].p;
        you = c;
        you -= (a[i+1].d-a[i].d)/d2;
        q.push(a[i].p);
    }
    ans -= you*q.top();
    printf("%.2lf",ans);
}
2024/10/8 18:51
加载中...