马蜂有点丑但真心希望大佬帮助,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;
}