样例过了,为啥只有10分?
查看原帖
样例过了,为啥只有10分?
560112
__Alexander__楼主2024/9/26 21:20
#include <bits/stdc++.h>
using namespace std;
int n;
double s,c;
double ekm,sprize;
double ans,km[55],pr[55];
void dfs(int step,double money,double soil){
	if (step==n+1){
		ans=min(ans,money);
	}
	else{
		soil-=(km[step]-km[step-1])/ekm;
		if (soil*ekm<km[step+1]-km[step]){
			dfs(step+1,money+20+pr[step]*(c-soil),c);	
		}
		else if (soil*2<c){
			dfs(step+1,ekm+20+pr[step]*(c-soil),c);
			dfs(step+1,money,soil);	
		}
		else{
			dfs(step+1,money,soil);
		}
	}
}
int main(){
	cin>>s;
	cin>>c>>ekm>>sprize>>n;
	ans=sprize;
	km[n+1]=s;
	for(int i=1;i<=n;i++){
		cin>>km[i]>>pr[i];
		ans+=pr[i]*c+20;
	}
	dfs(1,sprize,c);
	printf("%.1lf",ans);
	return 0;
}
2024/9/26 21:20
加载中...