MarsCode-徒步
本文最后更新于:2024年10月13日 晚上
问题描述
小明想从A徒步到B,总路程需要M天,路程中为了确保安全,小明每天需要消耗1份食物。
在起点及路程当中,零星分布着N个补给站,可以补充食物,不同补给站的食物价格可能不同。
请问小明若要安全完成徒步,最少需要花费多少钱呢?
输入格式
第一行为两个正整数M
、N
,代表总路程M
天,补给站个数N
接下来N
行,每行有两个非负整数A
、B
代表一个补给站,表示第A
天经过该补给站,每份食物的价格为B
元。
A
是从0开始严格递增的,即起点一定有补给站,补给站是按位置顺序给出的,且同一个位置最多有一个补给站。
输出格式
输出一个整数,表示最少花费的金额
输入样例
1 |
|
输出样例
1 |
|
说明:在第0天买2份食物,在第2天买3份食物,共花费7元
数据范围
- 30%的数据,N <= M <= 100
, 0 <= A < M
, 0 <= B <= 1000
- 80%的数据,N <= M <= 10000
, 0 <= A < M
, 0 <= B <= 1000
- 100%的数据,N <= M <= 1000000
, 0 <= A < M
, 0 <= B <= 1000
解答
采用动态规划求解
$$
dp[day][food] =min{dp[day-1][food+1], dp[day-1][food]+price, dp[day-1][food-1]+price*2 + …}
$$
Python代码求解如下
1 |
|
MarsCode-徒步
https://furthur509.github.io/2024/10/13/MarsCode-徒步/