题目描述
有一个箱子容量为 VVV (正整数, 0≤V≤200000 \le V \le 200000≤V≤20000 ),同时有 nnn 个物品( 0<n≤300<n \le 300<n≤30 ,每个物品有一个体积(正整数)。
要求 nnn 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
输入输出格式
输入格式:
111 个整数,表示箱子容量
111 个整数,表示有 nnn 个物品
接下来 nnn 行,分别表示这 nnn 个物品的各自体积
输出格式:
111 个整数,表示箱子剩余空间。
输入输出样例
说明
NOIp2001普及组 第4题
非常简单的题目,刷题解时发现bitset这个神奇的玩意,真心6666。
看一下某大佬的AC代码:
#include<bits/stdc++.h>
using namespace std;
const int N=20505; bitset<N> a; int n,v; int main() { scanf("%d%d",&v,&n); int x; for(int i=1;i<=n;i++) { scanf("%d",&x); a|=(a<<x); a[x-1]=1; } for(int i=v-1;i>=0;i--) if(a[i]){ printf("%d",v-i-1);break; } return 0; }