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。每租用一輛纜車,翰翰和達...