标签:div using open opened span int print ali bre
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\n",u-m); 34 } 35 return 0; 36 }
标签:div using open opened span int print ali bre
原文地址:https://www.cnblogs.com/XXrll/p/10123339.html