#5测试点错了,求调
查看原帖
#5测试点错了,求调
26314
hecien楼主2022/7/17 22:28
#include <bits/stdc++.h>
using namespace std;
const int maxn=5007;
double d1,d2,p,c,D[maxn],P[maxn];
double maxd,mini=10000.0;
int n;
bool f=false;
int dfs(double sum,int p,int bp){
	if((D[p]-D[bp])>maxd)return 987654.2;
	else{
		sum+=((D[p]-D[bp])/d2)*P[bp];
		if(p==n+2){
			mini=min(mini,sum);
			cout<<sum<<endl;
			f=true;
			return -2.0;
		}
		else{
			for(int i=p+1;i<=n+2;++i)dfs(sum,i,p);
		}
	}
}
int main(){
	cin>>d1>>c>>d2>>p>>n;
	//两个城市之间的距离D1 汽车油箱的容量C 每升汽油能行驶的距离D2 出发点每升汽油价格P 沿途油站数N
	for(int i=2;i<=n+1;++i)cin>>D[i]>>P[i];
	D[1]=0;
	D[n+2]=d1;
	P[1]=p;
	maxd=c*d2;
	dfs(0,1,1);
	if(f==false)cout<<"No Solution"<<endl;
	if(f==true)cout<<fixed<<setprecision(2)<<mini<<endl;
	return 0;
}
2022/7/17 22:28
加载中...