qz
查看原帖
qz
745667
xiepingfang楼主2023/9/22 11:35

rt 求助,不知道错哪了

#include <bits/stdc++.h>
using namespace std;
struct node{
    double a, dis;
}e[7];
bool cmp(node a, node b){
    return a.dis<b.dis;
}
int main(){
    int n;
    double dist, vol, voldist, sum=0, ans=0;
    cin >> dist >> vol >> voldist >> e[0].a >> n;
    e[0].dis=0;
    for (int i=1; i<=n; i++){
        cin >> e[i].dis >> e[i].a;
        if(e[i].dis-e[i-1].dis>vol*voldist){
            cout << "No Solution";
            return 0;
            
        }
    }
    sort(e+1, e+n+1, cmp);
    for (int i=0; i<n; i++){
        for (int j=i+1; j<=n; j++){
            if (e[j].dis-e[i].dis<vol*voldist){
                if (e[j].a<e[i].a||i==n-1){
                    if (ans>=(e[j].dis-e[i].dis)/voldist){
                        ans-=(e[j].dis-e[i].dis)/voldist;
                    }else{
                        sum+=((e[j].dis-e[i].dis)/voldist-ans)*e[i].a;
                        ans=0;
                    }
                }
            }else{
                sum+=e[i].a*(vol-ans);
                ans=vol;
                ans-=(e[i+1].dis-e[i].dis)/voldist;
            }
        }
    }
    printf("%.02lf", sum);

    return 0;
}
2023/9/22 11:35
加载中...