UVa 10201 Adventures in Moving - Part IV
2017-02-05 14:48
267 查看
https://vjudge.net/problem/UVA-10201
题意:
给出到达终点的距离和每个加油站的距离和油费,初始油箱里有100升油,计算到达终点时油箱内剩100升油所需的最少花费。
思路:
我们用d[i][j]来表示车子在第 i 个加油站时还剩 j 升油量的最小花费。
先说一下转移方程吧,d[i][j] = min(d[i][j], d[i - 1][j + l - k] + k*b[i]),k代表的是在 i 这个加油站所加的油量,加了之后的总油量就是 j 。
需要注意的是,油箱的容量只有200升,所以j+l-k(第 i-1 个加油站的油量)必须小于等于200。
最后的判断,如果目的地距离最后那个加油站大于了100,那最终肯定是没办法剩100升的,这时可以直接“Impossible”。
本题的输入也是很麻烦,每次都需要整行读入才行。
题意:
给出到达终点的距离和每个加油站的距离和油费,初始油箱里有100升油,计算到达终点时油箱内剩100升油所需的最少花费。
思路:
我们用d[i][j]来表示车子在第 i 个加油站时还剩 j 升油量的最小花费。
先说一下转移方程吧,d[i][j] = min(d[i][j], d[i - 1][j + l - k] + k*b[i]),k代表的是在 i 这个加油站所加的油量,加了之后的总油量就是 j 。
需要注意的是,油箱的容量只有200升,所以j+l-k(第 i-1 个加油站的油量)必须小于等于200。
最后的判断,如果目的地距离最后那个加油站大于了100,那最终肯定是没办法剩100升的,这时可以直接“Impossible”。
本题的输入也是很麻烦,每次都需要整行读入才行。
#include<iostream> #include<algorithm> #include<cstring> #include<string> using namespace std; const int INF = 100000000; char s[100]; int length; int num; int a[105], b[105]; int d[105][205]; //d[i][j]表示在第i站还剩j汽油时的最少费用 int main() { int T; gets(s); sscanf(s, "%d", &T); gets(s); //吃掉空行 while (T--) { gets(s); sscanf(s, "%d", &length); num = 0; a[0] = 0; while (gets(s)) { if (s[0] == '\0') break; num++; sscanf(s, "%d %d", &a[num], &b[num]); //cout << a[num] << " " << b[num] << endl; if (a[num] > length) num--; //距离大于目的地的站不用考虑 } for (int i = 0; i <= num; i++) for (int j = 0; j <= 200; j++) d[i][j] = INF; d[0][100] = 0; for (int i = 1; i <= num; i++) { int l = a[i] - a[i - 1]; for (int j = 0; j <= 200; j++) { for (int k = 0; k <= j; k++) if (j + l - k <= 200) d[i][j] = min(d[i][j], d[i - 1][j + l - k] + k*b[i]); } } if (length - a[num]>100 || d[num][100 + length - a[num]] == INF) printf("Impossible\n"); else printf("%d\n", d[num][100 + length - a[num]]); if (T) printf("\n"); } return 0; }
相关文章推荐
- UVA - 10201 Adventures in Moving - Part IV
- uva 10201 Adventures in Moving - Part IV
- uva 10201 Adventures in Moving - Part IV(dp)
- UVA10201 - Adventures in Moving - Part IV
- uva10201 - Adventures in Moving - Part IV(动归)
- UVA - 10201 Adventures in Moving - Part IV
- UVA 10201 Adventures in Moving - Part IV(dp)
- UVA 10201 Adventures in Moving - Part IV
- UVA 10201 Adventures in Moving - Part IV
- uva10201 - Adventures in Moving - Part IV
- uva 10201 Adventures in Moving - Part IV (DP)
- UVA 10201 Adventures in Moving - Part IV(动态规划)
- UVA 10201 Adventures in Moving - Part IV(dp)
- UVA 10201 Adventures in Moving - Part IV 车站加油 dp
- Uva 10201 Adventures in Moving - Part IV
- uva_10201 - Adventures in Moving - Part IV (普通DP)
- UVA - 10201 Adventures in Moving - Part IV
- uva 10201 - Adventures in Moving - Part IV(dp)
- UVA 10201 Adventures in Moving - Part IV
- uva 10201 - Adventures in Moving - Part IV