No Solution 复制粘贴时少复制个n。。。。。
|
|
#include<cstdio>
#include<cmath> #include<algorithm> #define precision 0.0001 #define maxn 1000 using namespace std; struct tnode{double d,p;}a[maxn+10]; double d1,c,d2,p; int n; bool cmp(tnode xx,tnode yy) { return xx.d<yy.d; } int main() { // freopen("lyuxing.in","r",stdin); // freopen("lyuxing.out","w",stdout); int i,j,k; double s,ans,x,y; scanf("%lf%lf%lf%lf%d",&d1,&c,&d2,&p,&n); a[1].d=0,a[1].p=p; a[2].d=d1,a[2].p=0; for(n+=2,i=3;i<=n;i++)scanf("%lf%lf",&a[i].d,&a[i].p); sort(a+1,a+n+1,cmp); k=1,ans=x=0,s=c*d2; while(k<=n) { if(a[k+1].d-a[k].d>s){printf("No Solution\n");return 0;} for(j=k+1;a[j].d-a[k].d<=s && j<=n;j++) if(a[j].p<=a[k].p) { y=(a[j].d-a[k].d)/d2; if(x<y)ans+=a[k].p*(y-x),x=0; else x-=y; k=j; break; } if(fabs(a[k].d-d1)<=precision) { printf("%.2lf\n",ans); return 0; } if(j!=k) { ans+=a[k].p*(c-x); x=c-(a[k+1].d-a[k].d)/d2; k++; } } return 0; } |
|
我竟然把文件名读成刘醒。。。
题目 1160 [NOIP 1999]旅行家的预算
2016-08-07 11:53:42
|
|
对于每一次到达站点的时候都进行决策:
寻找距离当前站最近的比当前站便宜的站点 如果找到了,油量够就直接开过去,油量不够就冲到刚好可以开过去 如果找不到,就到前面找一个充满油量能到得了的最便宜的站点,充满油开过去。 如果加满油找不到任何站点,那就输出No Solution
题目 1160 [NOIP 1999]旅行家的预算
2016-05-06 06:15:34
|
|
数据没问题啊
题目 1160 [NOIP 1999]旅行家的预算
2012-11-03 11:32:03
|
|
那你怎么过第一个数据......
题目 1160 [NOIP 1999]旅行家的预算
2012-10-22 20:53:45
|
|
第一个数据错了
题目 1160 [NOIP 1999]旅行家的预算
2012-10-19 20:21:42
|