刷題記錄 codevs2144 砝碼稱重 2

2021-09-30 14:15:16 字數 625 閱讀 5152

典型的折半列舉法

本質上是用空間換時間的思想,把一半的資料搜過之後用陣列儲存起來,

搜另一半的時候就可以直接使用了

這樣就可以把時間複雜度由乘轉變為和

效率改善非常大哦

#include#include#include#include#include#include#define maxn 35

using namespace std;

int n,m;

int a[maxn];

int l,r;

int ans=0x7fffffff;

mapp;

void dfs1(int k,int s,int c)

} else

for(int i=k;i<=l;i++) }}

void dfs2(int k,int s,int c)

for(int i=k;i<=r;i++) }}

int main()

sort(a+1,a+n+1);

l=n/2; r=n;

dfs1(1,0,0);

dfs2(l+1,0,0);

printf("%d",ans);

return 0;

}

Codevs 2144 砝碼稱重 2

時間限制 1 s 空間限制 16000 kb 題目等級 鑽石 diamond 題解有n個砝碼,現在要稱乙個質量為m的物體,請問最少需要挑出幾個砝碼來稱?注意乙個砝碼最多只能挑一次 輸入描述 input description 第一行兩個整數n和m,接下來n行每行乙個整數表示每個砝碼的重量。輸出描述 ...

codevs 2144 砝碼稱重 2(搜尋 剪枝)

codevs 2144 砝碼稱重 2 題目描述 description 有n個砝碼,現在要稱乙個質量為m的物體,請問最少需要挑出幾個砝碼來稱?注意乙個砝碼最多只能挑一次 輸入描述 input description 第一行兩個整數n和m,接下來n行每行乙個整數表示每個砝碼的重量。輸出描述 outpu...

OI刷題記錄

2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...