大佬看一下什么问题,输出答案都是0
查看原帖
大佬看一下什么问题,输出答案都是0
1052007
wanxuhang楼主2023/8/14 12:50
#include<bits/stdc++.h>
using namespace std;
double d1,c,d2,p;
int n;
struct distprice{
	double dist;
	double price;
};
distprice a[505];

double sum=0;
void trevel(int x){
	if (x==n) return;
	if (c*d2<a[x+1].dist-a[x].dist){
		cout<<"No Solution";
		return;
	}
	for (int i=x+1;i<=n && a[i].dist-a[x].dist<=c*d2;i++){
		if (a[i].price<a[x].price){
			sum+=a[x].price*((a[i].dist-a[x].dist)/d2);
			return trevel(i);
		}	
	}
	if (d1-a[x].dist<=c*d2){
		sum+=a[x].price*((d1-a[x].dist)/d2);
		return;
	}
	else{
		int minn=505;
		for (int i=x+1;i<=n && a[i].dist-a[x].dist<=c*d2;i++){
			if (a[i].price<a[minn].price){
				minn=i;
			}
		}
		sum+=a[x].price*((a[minn].dist-a[x].dist)/d2);
		return trevel(minn);
	}
	
}
bool cmp(distprice a,distprice b){
	return a.dist<b.dist;
}
int main(){
	a[0].dist=0;
	a[0].price=p;
	a[505].price=505;
	cin>>d1>>c>>d2>>p>>n;
	for (int i=1;i<=n;i++){
		cin>>a[i].dist>>a[i].price;
	}
	sort(a+1,a+1+n,cmp);
	trevel(0);
	cout<<sum;
	return 0;
}

2023/8/14 12:50
加载中...