错在哪了?
查看原帖
错在哪了?
773813
xzz_cat6楼主2023/10/6 08:16

#include<bits/stdc++.h> using namespace std; double d1,c,d2,p,ans; int n; double l[502],pri[501]; double Min(int ll,double las){ double x=d2*c;; if(l[ll+1]-l[ll]>x) { return -1; } double pmin=1000;int imin; for(int i=ll+1;i<=n;i++){ if(pri[i]<pmin&&l[ll]+x>=l[i]){ pmin=pri[i]; imin=i; } }

if(pmin>=pri[ll]){
	if(x>=d1-l[ll]){
		return pri[ll]*((d1-l[ll])/d2-las)+ans;
	}
	ans+=pri[ll]*(c-las);
	return Min(ll,c-(l[imin]-l[ll])/d2);
}
else{
	ans+=pri[ll]*((l[imin]-l[ll])/d2-las);
	return Min(imin,0);
}

} int main(){ cin>>d1>>c>>d2>>p>>n; l[0]=0; l[n+1]=d1; pri[0]=p; for(int i=1;i<=n;i++){ cin>>l[i]>>pri[i]; }

double mmm=Min(0,0);
if(mmm==-1){
	printf("No Solution");
	return 0;
}
printf("%.2f",mmm);
return 0;

}

2023/10/6 08:16
加载中...