求助
查看原帖
求助
664744
_lqs_楼主2023/1/4 16:09

调傻了

#include<bits/stdc++.h>
using namespace std;
int n,m,i,j;
double d1,d2,c,p1,d[10],p[10],ans=10000000000.00,C[10],PR[10];
void dfs(int k,double you,double zhi){
	if(k>n){
		ans=min(ans,zhi);
		return;
	}
	for(int i=k;i<=n+1;i++){
		double geng=you+(d[i]-d[k])/d2;
		if(geng*d2<d[k+1]-d[k]) continue;
		if(geng>c) continue;
		if(k==0) dfs(k+1,geng,zhi+(d[k+1]-d[k])/d2*p1);
		if(k!=0) dfs(k+1,geng,zhi+(d[k+1]-d[k])/d2*p[k]);
	}
}
int main(){
	scanf("%lf%lf%lf%lf%d",&d1,&c,&d2,&p1,&n);
	for(i=1;i<=n;i++) scanf("%lf%lf",&d[i],&p[i]);
	d[n+1]=d1;
	dfs(0,0,0);
	if(ans==1000000000.00) printf("No Solution");
	else printf("%.2lf",ans);
	return 0;
};
2023/1/4 16:09
加载中...