#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int w[200],f[35][20005];
int main() {
int t,m;
cin>>t>>m;
for(int i=1;i<=m;i++)
cin>>w[i];
for(int i=1;i<=m;i++){
for(int j=1;j<=t;j++){
if(j>=w[i]&&f[i-1][j-w[i]]+w[i]<=t)
f[i][j]=max(f[i-1][j-w[i]]+w[i],f[i-1][j]);
else
f[i][j]=f[i-1][j];
}
}
cout<<t-f[m][t]<<endl;
return 0;
}
vijos 1133 装箱问题(简单01背包)
最新推荐文章于 2022-06-01 16:46:59 发布