求助 第#5个点WA
查看原帖
求助 第#5个点WA
703124
chensh252楼主2022/8/9 16:16
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

double d[10], p[10], cost = 0, l, v;
//d、p表示距离和钱,cost表示花费
//l表示油箱容量,小v表示每升油行驶距离 
int n;
double qe, sj, sxmax, V = 0, sje;
//大V表示剩余油量 

int main()
{
	memset(d, -1, sizeof(d));
	memset(p, -1, sizeof(p));
	
	cin >> qe >> l >> v >> p[0] >> n;
	
	d[0] = 0;
	d[n + 1] = qe;
	p[n + 1] = 0;
	sxmax = l * v;
	//sxmax表示汽车加满油行驶的最远距离 
	
	for (int i = 1; i <= n; i ++ )
	  cin >> d[i] >> p[i];
	  
	for (int i = 0; i <= n ;i ++ ) 
	{
		sj = d[i + 1] - d[i];
		//sj表示相邻两地距离 
		
		if (sj > sxmax)
		{
			cout << "No Solution" << endl;
			return 0;
		}
		
		if (p[i + 1] < p[i])
		{
			if (sj / v < V) {V -= (sj / v); continue;}
			cost += (sj / v - V) * p[i];
			V = 0;
			continue;
		}
		else
		{
			for (int j = 2; (j + i) <= n + 1; j ++ )
			{
				if (p[j + i] < p[i])
				{
					sje = d[i + j] - d[i]; //sje与sj意思差不多 
					if (sxmax > sje) 
					  {
						cost += (sje / v - V) * p[i];
						V = 0;
						i += (j - 1);
					  }
					else
					  {
						cost += (sxmax / v - V) * p[i];
						V = sxmax / v - sj / v;
					  }
					
					break;
				}
			}
		}
	}
	
	printf ("%.2f" ,cost);
	return 0;
} 
2022/8/9 16:16
加载中...