P1049 装箱问题

题目描述

有一个箱子容量为 VVV (正整数, 0≤V≤200000 \le V \le 200000V20000 ),同时有 nnn 个物品( 0<n≤300<n \le 300<n30 ,每个物品有一个体积(正整数)。

要求 nnn 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。

输入输出格式

输入格式:

111 个整数,表示箱子容量

111 个整数,表示有 nnn 个物品

接下来 nnn 行,分别表示这 nnn 个物品的各自体积

输出格式:

111 个整数,表示箱子剩余空间。

输入输出样例

输入样例#1: 复制
24
6
8
3
12
7
9
7
输出样例#1: 复制
0

说明

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; } 

猜你喜欢

转载自www.cnblogs.com/Alex-leaves/p/9240923.html