最后一个点WA掉了
查看原帖
最后一个点WA掉了
702449
feng_nuoyiman楼主2022/6/5 11:49

蒟蒻的代码

纯模拟,自己感觉没有毛病……

#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

2022/6/5 11:49
加载中...