#P3052. 摩天大楼里的奶牛(Cows in a Skyscraper)

0

摩天大楼里的奶牛(Cows in a Skyscraper)

摩天大楼里的奶牛(Cows in a Skyscraper)

题目描述

Bessie 和她的朋友们非常喜欢爬楼梯比赛,但奶牛们非常讨厌走下楼梯。因此,当奶牛们爬到最喜欢的摩天大楼顶层后,它们拒绝走楼梯下来,只能乘坐电梯返回一楼。

电梯的最大载重量为 WW(1≤W≤1081 \le W \le 10^8)磅,而第 ii 头奶牛的体重为 CiC_i(1≤Ci≤W1 \le C_i \le W)磅。共有 NN(1≤N≤181 \le N \le 18)头奶牛,请帮助 Bessie 计算最少需要乘坐多少趟电梯才能让所有奶牛都回到一楼。每趟电梯上所有奶牛的体重总和不得超过 WW。

输入格式

第一行包含两个用空格分隔的整数 NN 和 WW。

接下来 NN 行,第 ii 行包含一个整数 CiC_i,表示第 ii 头奶牛的体重。

输出格式

输出一行一个整数,表示最少需要的电梯趟数。

样例输入 #1

4 10 
5 
6 
3 
7 

样例输出 #1

3 

数据范围

样例说明:共有 44 头奶牛,体重分别为 5,6,3,75, 6, 3, 7 磅,电梯最大载重 1010 磅。可以让 11 号与 33 号奶牛同乘一趟(5+3=8≤105 + 3 = 8 \le 10),22 号和 44 号各乘一趟,共需 33 趟。

对于 100%100\% 的数据,1≤N≤181 \le N \le 18,1≤Ci≤W≤1081 \le C_i \le W \le 10^8。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1700。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1 样例
1 20 2~8 小规模 N≤10 / 特殊: 1趟全装下 / 特殊: 每头牛各需1趟
2 15 9~11 Hack: 反贪心先装大牛失败例 / Hack: N=1单头牛 / Hack: W=10^8极大权重边界
3 30 12~20 中规模 N≤15 / 大规模 N=18,W≤10^8 状压DP压力
4 25 21~25 随机 1≤N≤18,1≤C_i≤W≤10^8 回归

出处:原题链接