1.题面
题目描述
一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站ii离出发点的距离Di、每升汽油价格Pi(i=1,2,…,N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。
输入格式
第一行,D1,C,D2,P,N。
接下来有N行。
第i+1行,两个数字,油站i离出发点的距离Di和每升汽油价格Pi。
输出格式
所需最小费用,计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。
输入输出样例
输入
275.6 11.9 27.4 2.8 2
102.0 2.9
220.0 2.2
输出
26.95
说明/提示
N≤6,其余数字≤500
2.解题思路:反复贪心
在图中红框范围内
- 若有 p[0]>p[j],则找到第一个满足条件的 j,在A处只加注只可以到 j 处的油,再把 j 处看作为A重新进行如上操作,直到到终点为止
- 若无 p[0]>p[j],则找到其中最小的p[j],在A处加满油,求出到 j 处油箱剩余的容积,再把 j 处看作为A重新进行如上操作,直到到终点为止
- 若无 j,则输出“No Solution”
3.代码实现
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
struct node
{
double d,p;
}a[15];
int main()
{
double d1,c,d2,k,ans=0,temp=0<