求助!!!
查看原帖
求助!!!
526235
mmdxm楼主2022/8/9 12:10
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
double s1[1001],s2[1001],ans,sum,len;
int main(){
	double m,l,s,r,t,q;
	int n,i,k;
	scanf("%lf%lf%lf%lf%d",&m,&l,&s,&r,&n);
	s1[0]=0; s2[0]=r;
	for(i=1;i<=n;i++){
		scanf("%lf%lf",&s1[i],&s2[i]);
	}
	n++;
	s1[n]=m; s2[n]=1000;
	int num=0,p;
	while(num!=n){
	k=num; t=s2[num]; q=1000; p=0;
	for(i=num+1;i<=n;i++)
	{
		len=s1[i]-s1[num];
		if(len<=l*s)
		{
			if(s2[i]<=t)
			{
				k=i;
				t=s2[i];
				break;
			}
			if(s2[i]<=q)
			{
				p=i;
				q=s2[i];
			}
		}
		else break; 
	}
	if(k==num&&p==0)
	{
		printf("No Solution");
		return 0;
	}
	if(k==num) k=p;
	len=s1[k]-s1[num];
	if(k==n){
		if(sum<len/s)
	    ans+=(len/s-sum)*s2[num];
	}
	else
	{
	    if(s2[num]>s2[k])
		{
	        if(sum>=len/s) sum-=len/s;
            else
			{
            ans+=(len/s-sum)*s2[num];
	        sum=0;	
	        }
        }
        else
	    {
    	    ans+=(l-sum)*s2[num];
    	    sum=l-len/s;
	    }
    }
    num=k;
	}
	printf("%.2lf",ans);
	return 0;
} 
2022/8/9 12:10
加载中...