syhd142 |
|
|||
日歷
統(tǒng)計(jì)
導(dǎo)航常用鏈接留言簿(2)隨筆檔案(23)文章分類(270)
文章檔案(122)我的豆瓣搜索最新評論
閱讀排行榜
評論排行榜 |
好好的一個(gè)背包題目,非要弄個(gè)什么透支,沒搞懂。 #include <stdio.h>
#include <string.h> #define MAX(a, b) (a > b ? a : b) #define N 105 int c[N * 150], p[N + N], v[N + N]; int main() { int n, budget, ans; while(~scanf("%d %d", &budget, &n)) { for(int i = 1; i <= n; i++) scanf("%d %d", &p[i], &v[i]); memset(c, 0, sizeof(c)); for(int i = 1; i <= n; i++) for(int j = 10200; j >= p[i]; j--) { if(j == p[i]) c[j] = MAX(c[j], c[j - p[i]] + v[i]); else if(j > p[i] && c[j - p[i]]) c[j] = MAX(c[j], c[j - p[i]] + v[i]); } ans = 0; for(int i = 0; i < 10201; i++) { if((i > 2000 && i <= budget + 200) || i <= budget) { ans = ans > c[i] ? ans : c[i]; } } printf("%d\n", ans); } return 0; }
評論:
|
![]() |
|
Copyright © Fucker | Powered by: 博客園 模板提供:滬江博客 |