NOJ 1401 乘车费用 (线性dp 0/1背包)
2014-11-25 11:03
357 查看
乘车费用
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte描述
lqp家离学校十分十分远,同时他又没有钱乘taxi。于是他不得不每天早早起床,匆匆赶到公交车站乘车到学校。众所周知CZ是个公交车十分发达的地方,但是CZ的公交车十分的奇怪,lqp到学校的这段路上每一公里就有一公交车站,乘车费用如下表:
公里数 1 2 3 4 5 6 7 8 9 10
费用 12 21 31 40 49 58 69 79 90 101
而一辆汽车从不行驶超过10公里。lqp家距离学校n公里(不会超过100公里),假设他可以任意次换车,请你帮他找到一种乘车方案使费用最小(10公里的费用比1公里小的情况是允许的)。
输入
输入共两行,第一行为10个不超过100的整数,依次表示行驶1~10公里的费用,相邻两数间用空格隔开;第二行为lqp想要行驶的公里数(<=100)。
输出
输出仅一行包含一个整数,表示该测试点的最小费用。
样例输入
12 21 31 40 49 58 69 79 90 101
15
样例输出
147
题目来源
JSOI2010
题目链接:http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1401
题目分析:完全背包问题,每个车次都可以使用无数次
#include <cstdio> #include <algorithm> using namespace std; int const INF = 0xfffffff; int v[11], w[11], d, dp[105]; int main() { for(int i = 1; i < 11; i++) { w[i] = i; scanf("%d", &v[i]); } for(int i = 1; i < 105; i++) dp[i] = INF; scanf("%d", &d); for(int i = 1; i < 11; i++) for(int j = w[i]; j <= d; j++) dp[j] = min(dp[j], dp[j - w[i]] + v[i]); printf("%d\n", dp[d]); }
相关文章推荐
- NOJ-1401 乘车费用 题解要点
- NOJ 1984 比赛现场气氛营造问题II (线性dp 完全背包)
- hdoj 5185 Equation (线性dp 完全背包)
- HDU 3127 WHUgirls (线性dp 完全背包)
- 【DP】【水题】最小乘车费用
- 榨取kkksc03 luogu1855 dp 裸二维费用背包
- 【完全背包】最小乘车费用
- HDU 2159.FATE【二维费用背包(dp)】【4月25】
- HDU 1069 Monkey and Banana (线性dp 完全背包)
- noj [1479] How many (01背包||DP||DFS)
- 榨取kkksc03 luogu1855 dp 裸二维费用背包
- 榨取kkksc03 luogu1855 dp 裸二维费用背包
- POJ 3624 Charm Bracelet (线性dp 0/1背包)
- 【完全背包】最小乘车费用
- 榨取kkksc03 luogu1855 dp 裸二维费用背包
- 榨取kkksc03 luogu1855 dp 裸二维费用背包
- HDU 5185 Equation (线性dp 完全背包)
- tyvj p1015公路乘车-动态规划dp-完全背包
- 榨取kkksc03 luogu1855 dp 裸二维费用背包
- Regionals 2014 >> Asia - Taichung 7003 - A Balance Game on Trees 树形DP + 二维费用背包