首页 > 其他分享 >10. 汽车加油问题(贪心)

10. 汽车加油问题(贪心)

时间:2022-08-26 22:22:47浏览次数:47  
标签:贪心 10 加满 输出 int 加油站 加油 dis

题目描述:
一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产生一个最优解。
对于给定的n和k个加油站位置,计算最少加油次数。

输入格式:
输入数据的第一行有2 个正整数n和k(n≤5000,k≤1000),表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油站与第k-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第k+1 个加油站表示目的地。

输出格式:
将计算出的最少加油次数输出。如果无法到达目的地,则输出“No Solution!”。

样例①
输入

7 7
1 2 3 4 5 1 6 6

输出

4

代码:

#include<bits/stdtr1c++.h>
using namespace std;
int main() {
	int n, k, dis[1005];
	cin >> n >> k;
	int cnt = 0, s = n;
	for (int i = 0; i <= k; i++) {
		cin >> dis[i];
	}
	for (int i = 0; i <= k; i++) {
		if (dis[i] > n) {
			cout << "No Solution!";
			return 0;
		}
		if (s - dis[i] >= 0) {
			s -= dis[i];
		} else {
			cnt++;
			s = n - dis[i];
		}
	}
	cout << cnt;
	return 0;
}

标签:贪心,10,加满,输出,int,加油站,加油,dis
From: https://www.cnblogs.com/Fare-well/p/16629422.html

相关文章

  • 【题解】CF1007D Ants
    传送门题意:有\(m\)对链,每对链要选择一条,使得选择的链两两不交,求一组方案。题解:一眼看上去就是一个2-sat,考虑一种暴力的做法,枚举每一条边,覆盖这条边的链两两连边。......
  • 题解 UVA10791
    前言:数学符号约定:\(p\):任意一个质数\(n\)或\(m\):任意一个正整数\(a_i\):唯一分解时质数的指数\(A\):集合若无特殊说明,本篇题解的数学符号将会严格按照上......
  • 10个python基础技巧
    下面有几个python初学者不知道的技巧,学会了可以大大提升代码的简洁性和便捷性。1、真值比较初学者经常在if语句中使用==比较符来判断表达式是否为真值#错误写法a=Tru......
  • day27--Java集合10
    Java集合1021.集合家庭作业21.1Homework01按要求实现:封装一个新闻类,包括标题和内容属性,提供get、set方法,重写toString方法,打印对象时只打印标题;只提供一个带参数......
  • es6——js第7种数据类型symbol和es10新增属性description
    文章结构创建symbol的方式获取symbol的描述信息注意事项不能与其他数据类型进行运算值是唯一的?分情况!不能用for-in遍历......
  • The request was canceled due to the configured HttpClient.Timeout of 10 seconds
    InfluxDB查询超时usingvarclient=InfluxDBClientFactory.Create(InfluxDBClientOptions.Builder.CreateNew().TimeOut(newTimeSpan(1,1,1,1)).Url(......
  • 关于我在.net core6时JWT 出现错误:IDX10653
      IDX10653:Theencryptionalgorithm'System.String'requiresakeysizeofatleast'System.Int32'bits.Key'Microsoft.IdentityModel.Tokens.Symmetr......
  • MySQL在grant时报错ERROR 1064 (42000)
    网上查到的grant方式大多会报错,主要原因是MySQL版本8.0后不能再使用原来的方式查询MySQL版本SELECTversion();在8.0版本下grantallprivilegesontest.*tote......
  • CF1060F
    所以为什么$n$是50啊(感觉真的,太难想了。首先各个点的答案可以分开算,假设当前点为x.其次这个期望没啥意义,直接先计算方案数再除一下就行了。还有就是只有删边是有一......
  • 考前10模板
    单源最短路-dijkstra+优先队列优化#include<bits/stdc++.h>usingnamespacestd;constintN=1e4+10,M=5e5+10;intn,m,s,bb=1;intdis[N],vis[N];//vis为是否已成无......