蒟蒻的代码
纯模拟,自己感觉没有毛病……
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
double d1,c,d2,p0,n,d[10],p[10];
double ans=0;
cin>>d1>>c>>d2>>p0>>n;
for(int i=1;i<=n;i++){
cin>>d[i]>>p[i];
}
double x=c*d2;
d[0]=0.0;
for(int i=1;i<=n;i++){
if(d[i]-d[i-1]>x){
cout<<"No Solution";
return 0;
}
}
p[0]=p0;
ans+=c*p[0];
double f=c;
int k=0,g=0,l=-1;
for(int i=1;i<=n;i++){
if(p[i]<p[k]&&d[i]-d[k]<=x){
f-=(d[i]-d[k])/d2;
ans-=f*p[k];
ans+=c*p[i];
f=c;
k=i;
}
if(d[i]-d[k]>x) g=1;
if(g==1){
int minn=505;
for(int j=k+1;j<=i;j++){
if(p[i]<minn){
minn=p[i];
l=j;
}
}
}
if(l!=-1){
f-=(d[l]-d[k])/d2;
ans+=(c-f)*p[l];
f=c;
k=l;
i=l;
}
}
f-=(d1-d[k])/d2;
ans-=f*p[k];
cout<<fixed<<setprecision(2)<<ans;
return 0;
}
另外,不知道怎么回事,今天没下测试点,却说已经到最大次数QWQ