25分,求为什么输出全是0
查看原帖
25分,求为什么输出全是0
773747
yutong_Seafloor楼主2023/8/12 11:31
#include<bits/stdc++.h>
using namespace std;
double d1,c,d2,p,ans,you;
int n;
double dd[666],pp[666];
double pd(int lc,int go)
{
	int we,er;
	if(lc==n+1)
	{
		printf("%.2lf",ans);
		return 0;
	}
	if(lc<go)
	{
		you-=(dd[lc+1]-dd[lc])/d2;
		pd(go,lc+1);
		return 0;
	}
	if(lc==go)
	{
		we=lc+1;
		while(pp[we]>pp[lc])
		we++;
		if(dd[we]-dd[lc]<=d2*c)
		{
			if(you<(dd[we]-dd[lc])/d2)
			{
				ans+=((dd[we]-dd[lc]/d2-you))*pp[lc];
				you=(dd[we]-dd[lc])/d2;
			}
			pd(we,lc);
		}
		else
		{
			er=lc+1;
			while(dd[er]-dd[lc]<=d2*c)
			er++;
			er--;
			ans+=(c-you)*pp[lc];
			you=c;
			pd(er,lc);
			return 0;
		}
	}
}
int main()
{
	cin>>d1>>c>>d2>>p>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>dd[i]>>pp[i];
		if(dd[i]-dd[i-1]>d2*c)
		{
			cout<<"No Solution";
			return 0;
		}
		dd[n+1]=d1;
		pp[n+1]=0;
		if(dd[n+1]-dd[n]>d2*c)
		{
			cout<<"No Solution";
			return 0;
		}
	}
	pd(0,0);
	return 0;
}
2023/8/12 11:31
加载中...