求助
查看原帖
求助
457016
zhouqiyue楼主2022/5/17 22:08

#只过了一个点 输入大概率有问题,但孩子不懂,求指教。

#include<bits/stdc++.h>
using namespace std;
double d1,d2,c,p1,p[600],d[600];
int main()
{
	int c,l,n;	
	double s=0,m=0;
	double a=p1,b=1234567.0;
	cin>>d1>>c>>d2>>p1>>n;
	for(int i=1;i<=n;i++)
		cin>>d[i]>>p[i];
	if(n==0)
	{
		if(d1>c*d2)
		cout<<"No Solution"<<endl;
		else
		m=d1/d2*p1;
		printf("%.2f/n",m);
	}
	
		    else if((d1-d[n])>c*d2)
	    cout<<"No Solution"<<endl;
	    else
	{

	double t=c*d2;
	    int i=1;
		while(1)
		{
			if((d1-s)<t)
		    {
		    	m+=(d1-s)/d2*p[i];
		    	printf("%.2f/n",m);
		    	break;
			}
		    if	(p[i]<a)
		    {
		        a=p[i];
		        m+=(d[i]-s)/d2*p[i];
		        s+=d[i];
		        l=i;
		    }
		    if(p[i]<b)
		    {
		        b=p[i];
		        c=i;
		    }
		    if(b==a)
		    b=1234567;
		    i++;
		    if((d[i]-s)>t&&b!=1234567)
		    {
		    	i=c;
		    	if((d1-d[l])<(d1-d[n]))
		    	c=(d1-d[l]-t)/d2;
		    	m+=c*p[i];
		        s+=d[i];
		        b=1234567;
		        l=i;
		    }
		    if((d[i]-s)>t&&b==1234567)
		    {
		    	cout<<"No Solution"<<endl;
				break; 
			}
	    }
	}
}
2022/5/17 22:08
加载中...