贪心写挂了,50pts,求调。
查看原帖
贪心写挂了,50pts,求调。
697299
hamster000楼主2023/10/19 22:47
#include <iostream>
#include <iomanip>
using namespace std;
double d1,c,d2,p[10],d[10];
int n;
int main(){
    cin >> d1 >> c >> d2 >> p[0] >> n;
    d[n+1]=d1;//最后一个加油站:终点
    for(int i=1;i<=n;i++){
        cin >> d[i] >> p[i];
    }
    double v=c,cost=c*p[0],ans=cost;//先加满c个油
    for(int i=1;i<=n+1;i++){
        //碰到一个加油站
        double delta=(d[i]-d[i-1])/d2;//用掉了delta个油
        if(delta>v){
            cout << "No Solution" << endl;
            return 0;
        }
        cost=cost/v*(v-delta);//油箱里目前油的总价
        v-=delta;//消耗了油,看看剩下多少
        //(cost/v)就是单价
        if((cost/v)>p[i]){//如果箱子里的油目前更贵
            ans-=cost;//退货退款
            v=0;//把所有油全退了。清空油箱
            cost=0;
        }
        //再次把油加满
        delta=(c-v)*p[i];//花了delta钱
        ans+=delta;
        cost+=delta;
        v=c;
    }
    ans-=cost;
    cout << setprecision(2) << fixed << ans << endl;
    return 0;
}
2023/10/19 22:47
加载中...