小猫爬山

Luogu
IDLGP10483
Time1000ms
Memory512MB
DifficultyP2
深度优先搜索 DFS
Freda 和 rainbow 饲养了 $N(N\le 18)$ 只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了 Freda 和 rainbow 只好花钱让它们坐索道下山。索道上的缆车最大承重量为 $W$,而 $N$ 只小猫的重量分别是 $C_1,C_2,\dots C_N$。当然,每辆缆车上的小猫的重量之和不能超过 $W(1\le C_i,W \le 10^8)$。每租用一辆缆车,Freda 和 rainbow 就要付 $1$ 美元,所以他们想知道,最少需要付多少美元才能把这 $N$ 只小猫都运送下山? ## Input 第一行包含两个用空格隔开的整数,$N$ 和 $W$。 接下来 $N$ 行每行一个整数,其中第 $i+1$ 行的整数表示第 $i$ 只小猫的重量 $C_i$。 ## Output 输出一个整数,最少需要多少美元,也就是最少需要多少辆缆车。 [samples]
Samples
Input #1
5 1996
1
2
1994
12
29
Output #1
2
API Response (JSON)
{
  "problem": {
    "name": "小猫爬山",
    "description": {
      "content": "Freda 和 rainbow 饲养了 $N(N\\le 18)$ 只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了 Freda 和 rainbow 只好花钱让它们坐索道下山。索道上的缆车最大承重量为 $W$,而 $N$ 只小猫的重量分别是 $C_1,C_2,\\dots C_N$。当然,每辆缆车上的小猫的重量之和不能超过 $W(1\\le C_i",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 1000,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P2"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP10483"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "Freda 和 rainbow 饲养了 $N(N\\le 18)$ 只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了\n\nFreda 和 rainbow 只好花钱让它们坐索道下山。索道上的缆车最大承重量为 $W$,而 $N$ 只小猫的重量分别是 $C_1,C_2,\\dots C_N$。当然,每辆缆车上的小猫的重量之和不能超过 $W(1\\le C_i...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments