【PAT甲级】1033. To Fill or Not to Fill (25)
来源:互联网 发布:sql安装进度条不动 编辑:程序博客网 时间:2024/05/16 15:18
陷阱:没有距离为0加油站,则汽车无法行驶( ´◔ ‸◔’)
#include <stdio.h>#include <algorithm>using namespace std;typedef struct Sta { double price; double dist; double gas_ds;} Sta;double c_max;double d;double d_avg;int n;double full_dist;//加满后可以行驶的距离double run_dist;//已经行驶的距离Sta s[501];bool com(Sta a, Sta b) { return a.dist < b.dist;}int findnext(int a, int b);int main(int argc, char *argv[]) { scanf("%lf %lf %lf %d", &c_max, &d, &d_avg, &n); int i, j, k; int flag = 1; for (i = 0; i < n; i++) { scanf("%lf %lf", &s[i].price, &s[i].dist); s[i].gas_ds = 0; flag = flag * s[i].dist; } if (flag != 0.0) { printf("The maximum travel distance = 0.00\n"); return 0; } n++; s[n - 1].dist = d; sort(s, s + n, com); full_dist = c_max * d_avg; run_dist = 0.0; int lastmin = 0; double lastpos = 0.0; for (i = 0; i < n - 1; i++) { if (s[i + 1].dist - s[i].dist > full_dist) { run_dist = s[i].dist + full_dist; break; } else { if (s[i].price < s[lastmin].price) { s[lastmin].gas_ds = s[i].dist - lastpos; lastmin = i; lastpos = s[i].dist; } else { if (s[i + 1].dist - s[lastmin].dist <= full_dist) { } else { do { s[lastmin].gas_ds = s[lastmin].dist + full_dist - lastpos; lastpos = s[lastmin].dist + full_dist; lastmin = findnext(lastmin + 1, i); } while (s[i + 1].dist - s[lastmin].dist > full_dist); } } } } s[lastmin].gas_ds = s[n - 1].dist - lastpos; if (run_dist > 0.0) { printf("The maximum travel distance = %.2f\n", run_dist); } else { double sum = 0.0; for (i = 0; i < n - 1; i++) { if (s[i].gas_ds > 0) { sum += s[i].gas_ds * s[i].price; } } sum = sum / d_avg; printf("%.2lf\n", sum); } return 0;}int findnext(int a, int b) { if (a > b) return -1; int minIndex = a; for (int i = a; i <= b; i++) { if (s[i].price < s[minIndex].price) { minIndex = i; } } return minIndex;}
0 0
- 【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 甲级 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)
- 1033. To Fill or Not to Fill (25)-PAT甲级真题
- 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)
- opengl纹理贴图的模式
- Oracle Lob类型存储浅析( alter index lob索引 rebuild tablespace XX报错问题)
- WebRTC for UWP
- Mqtt for UWP
- 集合源码分析----HashMap
- 【PAT甲级】1033. To Fill or Not to Fill (25)
- JavaScript继承(六种方式)(一)
- Opencv 中图形绘制函数 rectangle函数的使用
- 是时候来了解android7了:shortcuts(快捷方式)
- glibc 2.3分析准备
- window系统查看端口被哪个进程占用了
- java内存溢出排查正确姿势:
- Java面试总结
- XML 定义一些需要的控件背景样式