计蒜客刷题之旅 之 汽车费用
2018-02-10 22:51
162 查看
一个特别的单行街道在每公里处有一个汽车站。顾客根据他们乘坐汽车的公里使来付费。例如下表就是一个费用的单子。 没有一辆车子行驶超过10公里,一个顾客打算行驶n公里(1< =n< =100),它可以通过无限次的换车来完成旅程。最后要求费用最少。
输入格式:
第一行十个整数分别表示行走1到10公里的费用(< =500)。注意这些数并无实际的经济意义,即行驶10公里费用可能比行驶一公里少。
第二行一个整数n表示,旅客的总路程数。
输入格式:
仅一个整数表示最少费用。
题目难度:三星
不同于前两篇“计蒜客刷题之旅”系列文章的0-1背包问题,这里的可以多次乘坐相同公里数的公交车,这一类问题称之为完全背包问题。
样例输入
12 21 31 40 49 58 69 79 90 101
15
样例输出
147
输入格式:
第一行十个整数分别表示行走1到10公里的费用(< =500)。注意这些数并无实际的经济意义,即行驶10公里费用可能比行驶一公里少。
第二行一个整数n表示,旅客的总路程数。
输入格式:
仅一个整数表示最少费用。
题目难度:三星
不同于前两篇“计蒜客刷题之旅”系列文章的0-1背包问题,这里的可以多次乘坐相同公里数的公交车,这一类问题称之为完全背包问题。
样例输入
12 21 31 40 49 58 69 79 90 101
15
样例输出
147
#include <iostream> using namespace std; int main() { //以a数组存储费用信息 int a[11]; a[0] = 0;//空下a[0],使存储对应公里数的数组元素的下标与对应公里数相同 //输入数据 for(int i=1; i<=10; i++) cin >> a[i]; int n; cin >> n; //以b数组存储需要行驶的公里数(下标)的最优解 long long b[n+1]; b[0] = 0;//已知行驶公里数为0时费用也为0 for(int i=1; i<=n; i++) b[i] = 1000000000;//由于本题最优解的计算过程需要取小,给b数组元素赋较大的值,方便后边取小 for(int i=1; i<=10; i++){ //正向迭代,相同公里数可以多次行驶 for(int j=i; j<=n; j++){ b[j] = b[j]<(b[j-i]+a[i])?b[j]:(b[j-i]+a[i]); } } cout << b ;//搞定收工,回家吃饭 return 0; }
相关文章推荐
- 计蒜客 汽车费用 (完全背包)
- 计蒜客-乌鲁木齐网络赛&费用流&拆点-Our Journey of Dalian Ends
- 成都汽车过户费用
- 在北京拥有一辆汽车全年的养车费用在2万-3.5万元左右
- 在北京拥有一辆汽车全年的养车费用在2万-3.5万元左右
- 计蒜客 Our Journey of Dalian Ends(17新疆网赛) 费用流(思维建图)
- 沿着循环路线有N个加油站,其中i站的天然气量是[i]。你有一辆带有无限气罐的汽车,并且它的费用是从i站到我的下一站(i + 1).如果您可以绕电路行驶一次,则返回起始站索引
- 汽车费用(完全背包)
- Google自动驾驶汽车“眼中”的世界
- 亚洲领军汽车产业展会Automechanika Shanghai开幕丨Xtecher 前线
- photoshop绘制质感红色汽车
- 超级汽车电池充电技术,充电一分钟行驶500英里---凯利讯半导体
- 汽车导航仪哪个好
- LOJ6010 「网络流 24 题 - 11」数字梯形 坠大费用坠大流 坠大权不相交路径
- IC温度等级-商业级,工业级,汽车级,军品级
- 【BZOJ 1070】[SCOI2007]修车 费用流
- c编写程序完成m名旅客和n辆汽车的同步程序代写
- bzoj2424 [HAOI2010]订货(费用流)
- [DFNews] 入侵汽车控制刹车和油门?——速度与激情6 的节奏?
- 解决汽车加油问题