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;
}
posted @ 2026-02-12 21:50  2025ing  阅读(0)  评论(0)    收藏  举报