PAT 1033. To Fill or Not to Fill (25)
来源:互联网 发布:山姆店 知乎 编辑:程序博客网 时间:2024/05/21 01:20
基本思想:
(1) 对加油站按照价格进行排序;
(2)对于每个加油站,判断应该加入的油量(即能够跑的距离进行计算),与现有路程里的进行合并运算。参考Road结构体的建立方式。
可能有case无法通过的情况:
(1) 没有注意到printf有自动四舍五入的功能;
(2) 当无法跑完全程的时候,注意此题是计算最远跑的距离,不是计算能够跑的距离,所以应该从开始往下搜索直到无法抵达某一位置结束。
//1033. To Fill or Not to Fill (25)////基本思想://(1) 对加油站按照价格进行排序;//(2)对于每个加油站,判断应该加入的油量(即能够跑的距离进行计算),与现有路程里的进行合并运算。//参考Road结构体的建立方式。//可能有case无法通过的情况://(1) 没有注意到printf有自动四舍五入的功能;//(2) 当无法跑完全程的时候,注意此题是计算最远跑的距离,不是计算能够跑的距离,所以应该从开始往下搜索直到无法抵达某一位置结束。//#include<iostream>#include <vector>#include <functional>#include <algorithm>using namespace std;typedef struct Station{float price;float Di;}Station;typedef struct Road{float s;float e;float p;}Road;bool cmp(Station s1, Station s2){//return (s1.Di < s2.Di);return (s1.price < s2.price);}bool cmp2(Road r1, Road r2){return (r1.s < r2.s);}int main(void){#ifdef ONLINE_JUDGE#elsefreopen("D:\\1.txt", "r", stdin);#endiffloat Cmax, D, Davg, N;scanf("%f %f %f %f", &Cmax, &D, &Davg, &N);vector<Station> sta;Station tmp;int i;for (i = 0;i<N;i++){scanf("%f %f", &tmp.price, &tmp.Di);sta.push_back(tmp);}sort(sta.begin(), sta.end(), cmp);int MaxDis = Cmax * Davg;vector<Road> road;for (i = 0;i<sta.size();i++){Road tmp;tmp.s = sta[i].Di;tmp.e = min(sta[i].Di + MaxDis, D);tmp.p = sta[i].price;for (int j = 0;j<road.size();j++){if (tmp.s < road[j].s && tmp.e <= road[j].e && tmp.e >= road[j].s){tmp.e = road[j].s;}else if(tmp.s <= road[j].e && tmp.s >= road[j].s && tmp.e > road[j].e){tmp.s = road[j].e;}else if(tmp.s >= road[j].s && tmp.e <= road[j].e){tmp.s = tmp.e;}}if (tmp.s >= tmp.e){continue;}road.push_back(tmp);}float AllDis = 0;float TotalPrice = 0;for (i = 0;i<road.size();i++){AllDis += (road[i].e - road[i].s);TotalPrice += (road[i].e - road[i].s) * road[i].p;}if (AllDis != D){sort(road.begin(), road.end(), cmp2);float startPos = 0;float endPos = 0;for (i = 0;i<road.size();i++){if (road[i].s == endPos){endPos = road[i].e;}elsebreak;}printf("The maximum travel distance = %.2f", endPos);}else{printf("%.2f", TotalPrice/Davg);}return 0;}
0 0
- 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 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甲级.1033. 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-A 1033. To Fill or Not to Fill (25)
- VB6.0—编程入门
- XX大学CSDN高校俱乐部运营策划书
- 关于C++输入输出笔记
- 【机器学习中的数学】贝叶斯框架下二元离散随机变量的概率分布
- codeforces #483B# Friends and Presents(二分+math)
- PAT 1033. To Fill or Not to Fill (25)
- UVA - 10970 Big Chocolate
- 汇编语言中编写子程序的标准框架及简单运用举例
- Codeforces 167B Wizards and Huge Prize 概率dp
- synchronized锁住的是括号里的对象,而不是代码。
- 关于CSDN高校俱乐部的几个想法
- myeclipse 配置服务器
- 条款 39: 避免"向下转换" 继承层次
- 我的征程是未来!带你展望2015年最重要的网页设计趋势