PAT A1033 to fill or not to fill(25)
来源:互联网 发布:如何找pdf 知乎 编辑:程序博客网 时间:2024/06/05 15:26
这道题写的我很难受。。。
#include<cstdio>
#include<algorithm>
using namespace std;
int INF=99999;
struct sta{
float price;
float dis;
}stat[505];
int cmp(sta a,sta b){
return a.dis<b.dis;
}
int main(){
int c,d,dav,n,tag=0;
float price=0;
scanf("%d%d%d%d",&c,&d,&dav,&n);
int i;
for(i=0;i<n;i++){
scanf("%f%f",&stat[i].price,&stat[i].dis);
}
sort(stat,stat+n,cmp);
if(stat[0].dis!=0){
printf("The maximum travel distance = 0.00");
return 0;
}
float maxd=0;
int d1=stat[0].dis,d2,leftd=d;
for(i=1;i<n;i++){
d2=stat[i].dis;
if((d2-d1)>(c*dav)){//can't arrive
maxd += c*dav;
tag=1;
break;
}else{
maxd += (d2-d1);
d1=stat[i].dis;
}
}
if(tag==0){
d2=d;
if((d2-d1)>(c*dav)){//can't arrive
maxd += c*dav;
tag=1;
}
}
if(tag==1) printf("The maximum travel distance = %.2f",maxd);
int run = c*dav,k;
float tank=0,minp=INF;
if(tag==0){// count price
i=0;
while(i<n-1){
minp=INF;
for(int j=i+1;j<n && (stat[j].dis-stat[i].dis)<= (c*dav);j++){
if(stat[j].price<minp){
minp=stat[j].price;
k=j;
}
if(stat[j].price<stat[i].price){
k=j;
// add oil
break;
}
}
if(minp>stat[i].price && (d-stat[i].dis)> (c*dav)){
// add full oil
price += (c-tank)*stat[i].price;
tank=c;
}else if(minp>stat[i].price && (d-stat[i].dis)<= (c*dav)){
price += (d-stat[i].dis-tank*dav)/dav * stat[i].price;
printf("%.2f",price);
return 0;
}
else{
price += (stat[k].dis-stat[i].dis-tank*dav)/dav*stat[i].price;
tank += (stat[k].dis-stat[i].dis-tank*dav)/dav;
}
tank -=(stat[k].dis-stat[i].dis)/dav;//arrive k
i=k;
}
price += (d-stat[i].dis)/dav * stat[i].price;
printf("%.2f",price);
}
return 0;
}
- PAT A1033 to fill or not to fill(25)
- pat-a1033. To Fill or Not to Fill (25)
- PAT A1033. To Fill or Not to Fill (25)
- PAT-A1033. To Fill or Not to Fill (25)
- PAT A1033. To Fill or Not to Fill (25)
- 贪心算法--PAT.A1033.To Fill or Not to Fill
- A1033. To Fill or Not to Fill (25)
- 1033. To Fill or Not to Fill (25)-PAT
- 【PAT】1033. To Fill or Not to Fill (25)
- PAT 1033. To Fill or Not to Fill (25)
- PAT 1033. To Fill or Not to Fill (25)
- PAT A 1033. To Fill or Not to Fill (25)
- PAT 1033. To Fill or Not to Fill (25)(贪心)
- PAT (Advanced) 1033. To Fill or Not to Fill (25)
- PAT 1033. To Fill or Not to Fill (25)
- pat 1033. To Fill or Not to Fill (25)
- PAT 1004 To Fill or Not to Fill (25)
- PAT 1033. To Fill or Not to Fill (25)
- 大数据工程师面试题(四)
- eclipse使用git
- android应用开发代码规范
- Xshell/Xftp安装与使用
- JVM运行内存分配——拨云见日
- PAT A1033 to fill or not to fill(25)
- Shredding Company
- cs231n的第一次作业_图像特征_HSV_HOG
- 第二章_列表和元组
- Hibernate的缓存机制
- BZOJ 1179: [Apio2009]Atm Tarjan强连通分量缩点,SPFA,DP
- Python Generators(生成器)
- Sonar WebAPI and upgrade guideline for reference.
- Maven类包冲突终极解决小技若干