开始: 2026-10-07 00:00:00

【集训05】CSP-J模拟赛1007

结束: 2026-10-08 00:00:00
当前  2026-11-04 11:35:12  类型: IOI  状态: 已经结束 

P2. 板材装箱box
描述

木工坊有 n 块木板,每块高度为 1、宽度为 2^{x_i}(即宽度一定是 2 的整数次幂)。现在要把它们全部装进宽度为 W 的储物箱里。

装箱规则:

- 每一层从箱底开始水平排放若干木板,木板的宽度和不能超过该层的宽度 W;

- 一层放满(剩余宽度放不下任何一块还没装箱的木板)后,才能开始放新的一层;

- 木板的顺序可以任意选择,每块木板必须恰好放在某一层。

求最少需要多少层,才能装下全部木板。


输入

第一行一个整数 t,表示数据组数。

每组数据两行:第一行两个整数 n 和 W;第二行 n 个整数 w_1, w_2, \dots, w_n(保证每个 w_i 都是 2 的整数次幂)。


输出

对每组数据输出一行一个整数,表示最少层数。


样例

输入

2
5 16
1 2 8 4 8
6 10
2 8 8 2 2 8

输出

2
3
提示

第 1 组:一层放 8+8=16,另一层放 4+2+1=7\le 16,共 2 层。

第 2 组:三层分别放 8+2、8+2、8+2,每层宽度恰好 10,共 3 层;可以验证 2 层无法装下(总宽度 30 > 20)。

对于全部数据,保证 1 \le t \le 5\times 10^3,1 \le n \le 10^5(所有组 n 之和不超过 10^5),1 \le W \le 10^9,1 \le w_i \le 10^6,且每个 w_i 均为 2 的整数次幂。

| 20% | 1~5 | 20 | n \le 10,W \le 64 | 

| 60% | 6~15 | 40(累计 60) | 所有组 n 之和 \le 1000 | 

| 100% | 16~25 | 40(累计 100) | 所有组 n 之和 \le 10^5,W \le 10^9 | 

提交

题目参数
时间限制 1 秒
内存限制 128 MB
提交