HDU-2159 FATE 二维背包
生活随笔
收集整理的這篇文章主要介紹了
HDU-2159 FATE 二维背包
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
FATE
Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3955????Accepted Submission(s): 1750
?
Input 輸入數據有多組,對于每組數據第一行輸入n,m,k,s(0 < n,m,k,s < 100)四個正整數。分別表示還需的經驗值,保留的忍耐度,怪的種數和最多的殺怪數。接下來輸入k行數據。每行數據輸入兩個正整數a,b(0 < a,b < 20);分別表示殺掉一只這種怪xhd會得到的經驗值和會減掉的忍耐度。(每種怪都有無數個)?
Output 輸出升完這級還能保留的最大忍耐度,如果無法升完這級輸出-1。?
Sample Input 10 10 1 10 1 1 10 10 1 9 1 1 9 10 2 10 1 1 2 2?
Sample Output 0 -1 1 代碼一: 1 //二維背包 2 #include<stdio.h> 3 #include<string.h> 4 int dp[101][101]; //dp[i][j] 表示消耗i的忍耐度和殺j個怪物得到的最大經驗值 5 struct node 6 { 7 int e; //經驗值 8 int r; //忍耐度 9 }a[101]; 10 11 int main() 12 { 13 int n,m,k,s,i,j,t; 14 while(scanf("%d%d%d%d",&n,&m,&k,&s)!=EOF) 15 { 16 for(i=1;i<=k;++i) 17 scanf("%d%d",&a[i].e,&a[i].r); 18 memset(dp,0,sizeof(dp)); 19 for(i=1;i<=k;++i) //k表示怪物種類---對不同怪物遍歷一遍 20 for(j=a[i].r;j<=m;++j) //m表示保留的忍耐度 21 for(t=1;t<=s;++t) // s表示殺的怪物數 22 { 23 if(dp[j][t]<dp[j-a[i].r][t-1]+a[i].e) 24 { 25 dp[j][t]=dp[j-a[i].r][t-1]+a[i].e; 26 } 27 } 28 if(dp[m][s]>=n) //表示能過升級 29 { 30 for(i=0;i<=m;++i) //尋找能夠升級所消耗的最小忍耐度,只用找消耗相同忍耐度的情況下,令殺怪數量最多, 31 if(dp[i][s]>=n) //那么d[i][s]一定是消耗i忍耐度的情況下,獲得的最大經驗值 32 { 33 printf("%d\n",m-i); 34 break; 35 } 36 } 37 else 38 printf("-1\n"); 39 } 40 return 0; 41 }?代碼二:-----復習回顧
1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 int a[105], b[105], dp[105][105]; 7 8 int main() 9 { 10 int n, m, k, s; 11 while(cin >> n >> m >> k >> s) 12 { 13 for(int i = 0; i < k; ++i) 14 cin >> a[i] >> b[i]; 15 16 memset(dp, 0, sizeof(dp)); 17 for(int i = 0; i < k; ++i) 18 for(int j = 1; j <= s; ++j) 19 for(int p = b[i]; p <= m; ++p) 20 dp[p][j]= max(dp[p][j], dp[p-b[i]][j-1]+a[i]); 21 if(dp[m][s] < n) 22 cout << "-1" << endl; 23 else 24 { 25 for(int i = 0; i <= m; ++i) 26 { 27 if(dp[i][s] >= n) 28 { 29 cout << m-i << endl; 30 break; 31 } 32 } 33 } 34 } 35 return 0; 36 }?
總結
以上是生活随笔為你收集整理的HDU-2159 FATE 二维背包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不要手贱自己去通过Javascript画
- 下一篇: 连续好几次梦到自己怀孕了