P1049 装箱问题(01背包基础)
本题维护的是可达性,转移的道理等同于 \(01\) 背包。
这里用 bitset 实现。
#include<bits/stdc++.h>
using namespace std;
bitset<20020> mp;
int main(){
int V,n; scanf("%d%d",&V,&n),mp[0]=1;
for(int i=1,x;i<=n;i++)
scanf("%d",&x),mp|=(mp<<x);
for(int i=V;i>=0;i--) if(mp[i])
printf("%d\n",V-i),exit(0);
return 0;
}

浙公网安备 33010602011771号