码迷,mamicode.com
首页 > 其他好文 > 详细

1033. To Fill or Not to Fill (25)

时间:2019-12-31 23:17:39      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:mes   long   ble   max   node   imu   +=   index   for   

#include<stdio.h>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
int C,D,Davg,N;
double totDis = 0.0;
double totCost = 0.0;
double longDis = 0.0;
double leftCap = 0.0;
typedef struct NODE{
	double price;
	int dis;
}Node;
bool cmp(Node &a,Node &b){
	return a.dis<b.dis;
}
int main()
{
	cin>>C>>D>>Davg>>N;
	vector<Node>station(N+1);
	for(int i=0;i<N;i++){
		cin>>station[i].price>>station[i].dis;
	}
	station[N].price = 0;
	station[N].dis = D;
	sort(station.begin(),station.end(),cmp);
	longDis = C * Davg;
	int index = 0;
	if(station[0].dis != 0 ) {
			printf("The maximum travel distance = 0.00");
			return 0;
	}
	while(index <N){
		double minPri = station[index+1].price;
		double nowDis = station[index].dis ;
		double nexIndex;
		if(station[index + 1].dis - station[index].dis>longDis){
			printf("The maximum travel distance = %.2f",nowDis+longDis);
			return 0;
		}
		for(int j = index+1 ;j<=N && (station[j].dis - nowDis)<=longDis;j++){		
			if(station[j].price >= station[index].price){
				if(station[j].price <= minPri ){
					nexIndex = j;
					minPri  = station[j].price;
				}				
			}
			else{
				nexIndex = j;
				minPri = station[j].price;
				break;
			}
		}
		if(minPri >station[index].price){
			totCost += (C-leftCap) * station[index].price;
			leftCap = C - (station[nexIndex].dis - nowDis)/Davg;
		}
		else{
			double tmp  = (station[nexIndex].dis - nowDis)/Davg;
			if(tmp > leftCap){
				totCost +=(tmp - leftCap) * station[index].price;
				leftCap = tmp;
			}
			leftCap -= tmp;
		}
		totDis = station[nexIndex].dis;
		index  = nexIndex;
	}
	printf("%.2f",totCost);
	return 0;
 } 

  题意;从起点经过多个加油站到达终点,求最小花费,不能到达,求最远距离;

  总结:

      贪心策略,找能到达的首个油价比当前油价低的加油站,如果都没有,找能到达的最便宜的;

     初始邮箱为空,如果起点没有加油站,那么哪都去不了

1033. To Fill or Not to Fill (25)

标签:mes   long   ble   max   node   imu   +=   index   for   

原文地址:https://www.cnblogs.com/zxzmnh/p/12127538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!