首页 > 代码库 > Laoj P1288 最小乘车费用
Laoj P1288 最小乘车费用
问题背景
|
简单线性DP
|
试题描述
|
假设某条街上每一公里就有一个公共汽车站,并且一种可能的乘车费用如下表:
公里数 1 2 3 4 5 6 7 8 9 10 费用 12 21 31 40 49 58 69 79 90 101 而任意一辆汽车从不行驶超过10公里。某人想乘车到达n公里远的地方,假设他可以任意次换车,请你帮他找到一种乘车方案,使得总费用最小。 注意:10公里的费用比1公里小的情况是允许的。 |
输入格式
|
共两行。第一行为10个不超过200的整数,依次表示行驶1~10公里的费用,相邻两数间用一个空格隔开;第二行为某人想要乘车的公里数(不超过20000的整数)。
|
输出格式
|
仅一行,包含一个整数,表示到达n公里所需要的最小费用。
|
输入示例
|
12 21 31 40 49 58 69 79 90 101
15 |
输出示例
|
147
|
【分析】
dp入门,水题。
【代码】
1 #define mem(a, b, c) for(int i=1;i<=c;++i) a[i]=b; 2 #include <bits/stdc++.h> 3 using namespace std; 4 5 int n, a[20], dp[20020]; 6 7 int main() { 8 for (int i=1;i<=10;++i) 9 cin >> a[i]; 10 cin >> n; 11 mem(dp, 0x7fffffff, n); 12 for (int i=1;i<=n;++i) 13 for (int j=1;j<=min(10, i);++j) 14 dp[i]=min(dp[i], dp[i-j]+a[j]); 15 cout << dp[n] << endl; 16 }
Laoj P1288 最小乘车费用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。