社区讨论

样例过了,为啥只有10分?

P1180驾车旅游参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m1jbok3n
此快照首次捕获于
2024/09/26 21:21
去年
此快照最后确认于
2025/11/04 18:44
4 个月前
查看原帖
CPP
#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;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...