SZ#G6KP26. 【GESP强化 六级】背包

提交2 通过1
通过率50%
时间限制2000ms
内存限制256MiB
    ID: 11570 传统题 2000ms 256MiB 尝试: 2 已通过: 1 难度: 普及- 上传者: 标签>GESPGESP强化C++c++编程题背包问题0/1背包方案还原2星

题目描述

请解决经典的背包问题。给定一个有容量限制的背包和若干件可以选择放入背包的物品。每件物品都有自己的重量和价值。

你需要选择这些物品的一个子集,可以全部选择,也可以一件都不选。所选物品的总重量不能超过背包容量,并且它们的总价值应当尽可能大。

输入格式

输入包含 113030 组测试数据,直到文件结束。

每组数据的第一行包含两个整数 C,nC,n,分别表示背包容量和物品数量,其中 1C,n20001\le C,n\le2000

接下来 nn 行,第 ii 行包含两个整数 vi,wiv_i,w_i,分别表示第 ii 件物品的价值和重量。价值和重量都在 1110410^4 之间。

输出格式

对于每组测试数据输出两行。第一行输出所选物品的数量;第二行输出所选物品的编号。第一件物品的编号为 00,第二件为 11,依此类推。编号可以按任意顺序输出。

如果有多种总价值最大的选择方案,输出其中任意一种即可。

5 3
1 5
10 5
100 5
6 4
5 4
4 3
3 2
2 1
1
2
3
1 2 3
1 1
1 1
1
0
10 4
8 5
8 5
16 10
7 4
2
0 1

说明/提示

数据范围与约定

  • 1C,n20001\le C,n\le2000
  • 1vi,wi1041\le v_i,w_i\le10^4
  • 测试数据组数在 113030 之间