CFCF1498B.Box Fitting

普及/提高-

官方

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定 nn 个矩形,每个矩形的高度为 11。每个矩形的宽度都是 22 的幂(即可以表示为 2x2^x,其中 xx 是非负整数)。

还给定一个二维盒子,其宽度为 WW。注意,WW 不一定是 22 的幂。此外,WW 至少和所有矩形中最大的宽度一样大。

你需要求出该盒子的最小高度,使得能够放下所有给定的矩形。放置后盒子中可以有空余空间。

你不能旋转矩形来使其适应盒子。此外,任意两个不同的矩形不能重叠,即任意两个不同的矩形的交集面积必须为零。

具体样例的可视化说明见下方提示。

输入格式

输入的第一行为一个整数 tt1t51031 \le t \le 5 \cdot 10^3),表示测试用例的数量。每个测试用例包含两行。

对于每个测试用例:

  • 第一行包含两个整数 nn1n1051 \le n \le 10^5)和 WW1W1091 \le W \le 10^9);
  • 第二行包含 nn 个整数 w1,w2,,wnw_1, w_2, \dots, w_n1wi1061 \le w_i \le 10^6),其中 wiw_i 表示第 ii 个矩形的宽度。每个 wiw_i 都是 22 的幂;
  • 另外,保证 maxi=1nwiW\max\limits_{i=1}^{n} w_i \le W

所有测试用例中 nn 的总和不超过 10510^5

输出格式

输出 tt 个整数。第 ii 个整数表示第 ii 个测试用例的答案——二维盒子的最小高度。

输入输出样例

  • 输入#1

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

    输出#1

    2
    3

说明/提示

对于第一个样例,下面的图展示了一种将五个矩形以最小高度放入宽度为 1616 的二维盒子的方法:

在上图中,每个矩形内的数字表示其宽度。二维盒子的宽度为 1616(下方箭头所示)。在这种情况下,二维盒子的最小高度为 22(左侧所示)。

对于第二个样例,你可以通过在每一层放置两个矩形(宽度分别为 8822),共三层,得到最小高度为 33

首页