Acwing165 DFS 小貓爬山

2021-10-11 14:45:15 字數 1341 閱讀 7450

165. 小貓爬山 - acwing題庫

題解

因為 n

nn 很小,所以我們可以暴力列舉所有情況

那麼,我們要考慮的問題是搜尋的順序dfs函式的引數

搜尋的順序

對於每個小貓,我們有兩種決策

如果當前的車超重,把它放到新的車中

函式引數

對於引數,定義dfs(int u int k)—保證了所有情況都可以被找到

u

uu 表示當前列舉到第幾隻小貓

k

kk 表示當前有幾輛車

剪枝優化

code

#

include

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

#define

debug

(a) cout << #a <<

" "<< a << endl

const

int maxn =

1e5+7;

const

int n =

20, m = n *2;

const

int inf =

0x3f3f3f

;const

long

long mod =

1e9+7;

int n, w;

int sum[n]

, cat[n]

;int ans = inf, k =0;

void

dfs(

int u,

int k)

for(

int i =

0; i < k; i++)}

sum[k]

= cat[u]

;dfs

(u +

1, k +1)

; sum[k]=0

;}intmain()

dfs(1,

0);sort

(cat +

1, cat +

1+ n)

;reverse

(cat +

1, cat +

1+ n)

; cout << ans <<

'\n'

;return0;

}

ACWING165 小貓爬山(dfs)

翰翰和達達飼養了n只小貓,這天,小貓們要去爬山。經歷了千辛萬苦,小貓們終於爬上了山頂,但是疲倦的它們再也不想徒步走下山了 嗚咕 翰翰和達達只好花錢讓它們坐索道下山。索道上的纜車最大承重量為w,而n只小貓的重量分別是c1 c2 cn。當然,每輛纜車上的小貓的重量之和不能超過w。每租用一輛纜車,翰翰和達...

ACWing 165 小貓爬山 DFS剪枝

翰翰和達達飼養了n只小貓,這天,小貓們要去爬山。經歷了千辛萬苦,小貓們終於爬上了山頂,但是疲倦的它們再也不想徒步走下山了 嗚咕 翰翰和達達只好花錢讓它們坐索道下山。索道上的纜車最大承重量為w,而n只小貓的重量分別是c1 c2 cn。當然,每輛纜車上的小貓的重量之和不能超過w。每租用一輛纜車,翰翰和達...

Acwing 165 小貓爬山

翰翰和達達飼養了n只小貓,這天,小貓們要去爬山。經歷了千辛萬苦,小貓們終於爬上了山頂,但是疲倦的它們再也不想徒步走下山了 嗚咕 翰翰和達達只好花錢讓它們坐索道下山。索道上的纜車最大承重量為w,而n只小貓的重量分別是c1 c2 cn.當然,每輛纜車上的小貓的重量之和不能超過w。每租用一輛纜車,翰翰和達...