01++ Bookshelf 2
Posted xxrll
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01++ Bookshelf 2相关的知识,希望对你有一定的参考价值。
http://poj.org/problem?id=3628
就是比原题多了一个要求,输出>=m的最小值
kisang~独立做出来的都开心<( ̄︶ ̄)>
1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<iostream> 5 #include<algorithm> 6 using namespace std; 7 int w[13000],d[13000],f[1000015]; 8 int main() 9 { 10 int n,m; 11 while(scanf("%d%d",&n,&m)!=EOF) 12 { 13 int sum=0; 14 for(int i=1;i<=n;i++) 15 { 16 scanf("%d",&w[i]); 17 sum+=w[i]; 18 } 19 for(int i=1;i<=n;i++) 20 { 21 for(int k=sum;k>=w[i];k--) 22 f[k]=max(f[k],f[k-w[i]]+w[i]); 23 } 24 int u; 25 for(int i=m;i<=sum;i++) 26 { 27 if(f[i]>=m) //这里i从m开始就行,不用从1 28 { 29 u=f[i]; 30 break; 31 } 32 } 33 printf("%d ",u-m); 34 } 35 return 0; 36 }
以上是关于01++ Bookshelf 2的主要内容,如果未能解决你的问题,请参考以下文章
Bookshelf.js belongsToMany 查询列错误