最后一个蛙了
查看原帖
最后一个蛙了
356740
封禁用户楼主2020/7/11 16:54

失败记录

#include <bits/stdc++.h>
using namespace std;
double d1,c,d2,ds[10],ps[10],curoil=0,curdis=0,capdis,ans=0;
int n;
int main(void) {
    cin>>d1>>c>>d2>>ps[0]>>n;
    ds[n+1]=d1,ps[n+1]=0;
    for(int i=1;i<=n;i++) scanf("%lf %lf",&ds[i],&ps[i]);
    int i=0,j;
    while(i<=n) {
        curdis=0;
        capdis=c*d2;
        for(j=i+1;j<=n+1;j++) {
            curdis+=ds[j]-ds[j-1];
            if(curdis>capdis) break;
            if(ps[j]<=ps[i]) break;
        }
        if(curdis>capdis&&j==i+1) {
            printf("No Solution");
            return 0;
        }
        else if(curdis>capdis) ans+=(c-curoil)*ps[i],curoil=c-(ds[j-1]-ds[i])/d2,i=j-1;
        else ans+=(ds[j]-ds[i])/d2*ps[i],curoil=0,i=j;
    }
    printf("%.2lf",ans);
    return 0;
}

为什么不对呢

2020/7/11 16:54
加载中...