luogu_1016 旅行家的预算
Posted codetogether
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu_1016 旅行家的预算相关的知识,希望对你有一定的参考价值。
#include <bits/stdc++.h> using namespace std; double dist,p[10],d[10],v1,c,t,ans,r[10]; int n,now; int min(){ double minn=100000000000; int j; for(int i=0;i<now;i++)if(r[i]!=0 && minn>p[i])minn=p[i],j=i; return j; } int main(){ scanf("%lf%lf%lf%lf%d",&dist,&c,&t,&p[0],&n); r[0]=c; for(int i=1;i<=n;i++){scanf("%lf%lf",&d[i],&p[i]); r[i]=c;} for(int i=1;i<=n;i++){ if(c*t*i<d[i]){puts("No Solution"); return 0;} double need=(d[i]-d[i-1])/t; now=i; for(int j=0;j<i;j++){ if(need==0)break; int minn=min(); if(r[minn]>=need){ r[minn]-=need; ans+=p[minn]*need; need=0; } else { need-=r[minn]; ans+=r[minn]*p[minn]; r[minn]=0; } } } if(c*t*(n+1)<dist){puts("No Solution"); return 0;} dist=dist-d[n]; double need=dist/t; now=n+1; for(int j=0;j<=n;j++){ if(need==0)break; int minn=min(); if(r[minn]>=need){ r[minn]-=need; ans+=p[minn]*need; need=0; } else { need-=r[minn]; ans+=r[minn]*p[minn]; r[minn]=0; } } printf("%.2f ",ans); return 0; }
以上是关于luogu_1016 旅行家的预算的主要内容,如果未能解决你的问题,请参考以下文章