又是一道dp真题(P1049)
#include<iostream> using namespace std; int n,m,s=0x3f3f3f3f; long long w[10001],v[10001],f[10000001]; int main() { cin>>m>>n; for(int i=1;i<=n;i++) cin>>w[i]; for(int i=1;i<=n;i++) { for(int j=m;j>=w[i];j--) { f[j]=max(f[j-w[i]]+w[i],f[j]); } } cout<<m-f[m]; return 0; }