拜托帮我看看waw
查看原帖
拜托帮我看看waw
457016
zhouqiyue楼主2022/9/11 23:07

我觉得思路是没有问题的,就是汽车到达一个费用比他所在的加油点就加到到达下一个费用较少的加油点的油。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	double c,d1,d2,p1,s=0,m=0;
	int n,i,b=0,f=0;
	double d[100000]={0},p[100000]={0};
	cin>>d1>>c>>d2>>p1>>n;
	for(i=1;i<=n;i++)
	cin>>d[i]>>p[i];
	p[0]=p1;
	d[0]=0;
	d[n+1]=d1;
	i=1;
	if(d1-d[n]>c*d2)
	cout<<"No Solution"<<endl;
	if(d[1]>c*d2)
	cout<<"No Solution"<<endl;
	else
    while(1)
	{
		if(d[b]=d1)
	    {
			printf("%.2f",m);
			break;
		}
		if(d[i]-d[b]>c*d2)
		{
			if(i-b==1)
			{
		        cout<<"No Solution"<<endl;
		        break;
		    }
		    else
		    {
		    	i--;
		    	m+=(d[i]-d[b])*p[b];
		    	b=i;
			}
	    }
		else if(p[i]<=p[b])
		{
			m+=(d[i]-d[b])*p[b];
			b=i;
		}
		i++;
	}
	return 0;
 } 
2022/9/11 23:07
加载中...