luogu#B4093. [CSP-X2021 山东] 发送快递

    ID: 35296 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>动态规划 DP搜索2021山东状态压缩CSP-X

[CSP-X2021 山东] 发送快递

题目背景

原题为错题,不可做。数据范围修改如下,请以题目背景中的为准:

【数据范围和限制】

对于 40%40\% 的数据,1n151 \leq n \leq 151ai1001 \leq a_i \leq 100s=0s=0mm 的值保证有解。

对于 100%100\% 的数据,1n151 \leq n \leq 151ai1001 \leq a_i \leq 1000s150 \leq s \leq 15mm 的值保证有解。

为了防止无意义的钻牛角尖的 hack,本题认为 mm 不超过 23112^{31}-1

题目描述

小华有 nn 本不同的书(编号为 1,2,3,,n1,2,3,\dots,n),重量分别是 a1,a2,,ana_1,a_2,\dots,a_n 公斤(重量可以相同)。他想把这些书以快递的方式发给自己的好朋友,要求每个包裹的重量不能超过 mm 公斤(可以等于 mm 公斤),并且小华想把其中一些书(一组书,用书的编号给出来)放在一个包裹里,应该如何打包才能使得快递件数最少。

输入格式

第一行,包含两个整数 n,mn,m,之间用一个空格隔开,分别表示书的数量和快递包裹的最大重量。

第二行 nn 个整数 aia_i,表示 nn 本书的重量,每两个整数之间用一个空格隔开。

第三行一个整数 ss,表示一共有 ss 组书(每组书需要打包在一起)。如果 s=0s=0,则无此限制。数据保证每组书的重量不超过 mm

第四行开始共 ss 行,每行若干个整数,表示必须放在一个包裹里的书的编号,每两个整数之间用一个空格隔开。

输出格式

输出文件一行,一个整数,即快递最少件数。

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 说明】

11 本和第 44 本打包,重量是 1010 公斤。第 22 本和第 55 本打包,重量是 99 公斤。第 33 本单独打包,重量是 88 公斤。所以一共 33 件快递。

【输入输出样例 2 说明】

11 本和第 55 本打包,第 22 本、第 44 本、第 88 本和第 1010 本打包,第 33 本和第 77 本打包,第 66 本和第 99 本打包。所以一共 44 件快递。

【数据范围和限制】

对于 40%40\% 的数据,1n1051 \leq n \leq 10^51ai1001 \leq a_i \leq 100s=0s=0mm 的值保证有解。

对于 100%100\% 的数据,1n1051 \leq n \leq 10^51ai1001 \leq a_i \leq 1000s1000 \leq s \leq 100mm 的值保证有解。