#X0014. [CSP-X2021 山东] 发送快递
题目背景
本题采用洛谷修订版范围:n≤23、s≤15;原卷n≤10^5不适用于本地评测。每组及所有重叠合并后的书籍重量满足容量限制,保证有解。
题目描述
小华有 本不同的书(编号为 ),重量分别是 公斤(重量可以相同)。他想把这些书以快递的方式发给自己的好朋友,要求每个包裹的重量不能超过 公斤(可以等于 公斤),并且小华想把其中一些书(一组书,用书的编号给出来)放在一个包裹里,应该如何打包才能使得快递件数最少。
输入格式
第一行,包含两个整数 ,之间用一个空格隔开,分别表示书的数量和快递包裹的最大重量。
第二行 个整数 ,表示 本书的重量,每两个整数之间用一个空格隔开。
第三行一个整数 ,表示一共有 组书(每组书需要打包在一起)。如果 ,则无此限制。数据保证每组书的重量不超过 。
第四行开始共 行,每行若干个整数,表示必须放在一个包裹里的书的编号,每两个整数之间用一个空格隔开。
输出格式
输出文件一行,一个整数,即快递最少件数。
5 10
8 4 8 2 5
0
3
10 80
49 11 44 18 28 24 19 10 27 29
2
1 5
4 8 2
4
说明与数据范围
【输入输出样例 1 说明】
第 本和第 本打包,重量是 公斤。第 本和第 本打包,重量是 公斤。第 本单独打包,重量是 公斤。所以一共 件快递。
【输入输出样例 2 说明】
第 本和第 本打包,第 本、第 本、第 本和第 本打包,第 本和第 本打包,第 本和第 本打包。所以一共 件快递。
【修订后的数据范围和限制】
原题为错题,不可做。数据范围修改如下,请以题目背景中的为准:
【数据范围和限制】
对于 的数据,,,, 的值保证有解。
对于 的数据,,,, 的值保证有解。
为了防止无意义的钻牛角尖的 hack,本题认为 不超过 。
来源与本地评测说明
来源:洛谷 B4093。题面按来源整理,源题号保留。
本地测试数据自行构造,经过独立 Python 基准、边界对拍及 Linux C++17 沙箱核验,并非洛谷原版完整评测数据。本地训练分值归一为100分。原题提及但未提供的选手目录附件样例不在本地附件中;本页列出的输入输出样例完整保留。