首页 > 代码库 > poj 3628 Bookshelf 2
poj 3628 Bookshelf 2
http://poj.org/problem?id=3628
01背包
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 #define maxn 21 6 #define ll long long 7 using namespace std; 8 9 ll h[maxn];10 int n;11 ll b;12 ll dp[1000004];13 ll max1(ll a,ll b)14 {15 return a>b?a:b;16 }17 18 int main()19 {20 while(scanf("%d%lld",&n,&b)!=EOF)21 {22 ll v=0;23 for(int i=1; i<=n; i++)24 {25 scanf("%lld",&h[i]);26 v+=h[i];27 }28 for(int i=1; i<=n; i++)29 {30 for(ll j=v; j>=h[i]; j--)31 {32 dp[j]=max(dp[j-h[i]]+h[i],dp[j]);33 }34 }35 for(ll j=1; j<=v; j++)36 {37 if(dp[j]>=b)38 {39 printf("%lld\n",dp[j]-b);40 break;41 }42 }43 }44 return 0;45 }
poj 3628 Bookshelf 2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。