Hdu 4526 威威猫系列故事——拼车记
2013-03-27 16:04
330 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4526
DP题。
dp[i][j]表示前i辆车送走j个人的最小花费。
状态转移方程是: dp[i][j] = min(dp[i][j],dp[i-1][j-p] + p*t[i] + d),其中0<=p<=z[i]。p代表第i辆车送走p个人。
细节部分和边界条件看代码。
DP题。
dp[i][j]表示前i辆车送走j个人的最小花费。
状态转移方程是: dp[i][j] = min(dp[i][j],dp[i-1][j-p] + p*t[i] + d),其中0<=p<=z[i]。p代表第i辆车送走p个人。
细节部分和边界条件看代码。
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <algorithm> #include <stack> #include <queue> using namespace std; int t[105]; int z[105]; //dp[i][j]表示前i辆车送走j个人的最小花费 int dp[105][105]; int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif int cas; scanf(" %d",&cas); while(cas--) { memset(dp,0x3f3f3f3f,sizeof(dp)); memset(t,0,sizeof(t)); memset(z,0,sizeof(z)); int n,k,d,s; scanf(" %d %d %d %d",&n,&k,&d,&s); dp[0][0] = 0;//注意0辆车0个人是0而不是inf for(int i=1;i<=k;i++) { dp[i][0] = 0; scanf(" %d %d",&t[i],&z[i]); } //第i辆车 for(int i=1;i<=k;i++) { //前i辆车一共送走j个人 for(int j=1;j<=n;j++) { //其中第i辆车送走p个人 for(int p=0;p<=z[i];p++) { //前i-1辆车送走的人数 int temp = (j>p) ? (j-p) : 0; int price = (p == 0) ? 0 : d; dp[i][j] = min(dp[i][j],dp[i-1][temp] + p*t[i] + price); } } } if(dp[k] == 0x3f3f3f3f) { printf("impossible\n"); } else { printf("%d\n",dp[k] ); } } return 0; }
相关文章推荐
- HDU - 4526 威威猫系列故事――拼车记 (DP)
- HDU 4526 威威猫系列故事——拼车记 dp
- HDU 4526 威威猫系列故事——拼车记(DP)
- HDU 4526 威威猫系列故事——拼车记(01背包)
- hdu 4526 威威猫系列故事——拼车记
- hdu-4526-威威猫系列故事——拼车记-DP
- [HDU] 4526 威威猫系列故事——拼车记
- HDU 4526 威威猫系列故事——拼车记(DP)
- HDU 4526.威威猫系列故事——拼车记
- hdu 4526 威威猫系列故事——拼车记(DP)
- HDU-4526 威威猫系列故事——拼车记 动态规划
- HDU 4526——威威猫系列故事——拼车记
- hdu 4540 威威猫系列故事——打地鼠
- hdu 4540 威威猫系列故事——打地鼠 dp小水题
- HDU-4516 威威猫系列故事——因式分解 多项式分解
- HDU 4504 威威猫系列故事——篮球梦
- HDU-4540-威威猫系列故事——打地鼠
- HDU 4540 威威猫系列故事——打地鼠
- hdu 4504 威威猫系列故事——篮球梦_简单dp
- HDU-4540 威威猫系列故事——打地鼠 (动态规划)