DP做法 #5WA求助
查看原帖
DP做法 #5WA求助
663629
lrjdsb楼主2023/3/23 13:52

马蜂有点丑但真心希望大佬帮助,dp总体写的很好理解

#5正确答案:192.15 我的答案:192.32

#include<bits/stdc++.h>
using namespace std;
long double e,f[10],c,d2;
int n,i,j;
struct qwq{
	long double x,p;
	bool operator < (const qwq &A)const{
		if(x!=A.x) return x<A.x;
		return p<A.p;
	}
}d[10];
int main(){
	scanf("%Lf%Lf%Lf%Lf%d",&e,&c,&d2,&d[0].p,&n);
	d[++n].x=e;
	for(i=1;i<n;i++) scanf("%Lf%Lf",&d[i].x,&d[i].p);
	sort(d,d+1+n);
	for(i=0;i<=9;i++) f[i]=1e9;
	f[0]=0;
	for(i=1;i<=n;i++){
		if(d[i-1].x==d[i].x) continue;
		for(j=0;j<i;j++){
			if((d[i].x-d[j].x)/d2<=c){
				f[i]=min(f[i],f[j]+(d[i].x-d[j].x)/d2*d[j].p);
			}
		}
	}
	if(f[n]==1e9) return !printf("No Solution");
	printf("%.2Lf",f[n]);
	return 0;
}
2023/3/23 13:52
加载中...