練習記錄uva1354

2021-10-07 04:40:08 字數 1101 閱讀 2563

題目

一道暴力搜尋題目,第乙個要點:列舉天平就相當列舉二叉樹。另外要記錄不同集合可以擺出的二叉樹所有狀態(偏左值,偏右值),再往上推。

剛開始沒做過多少暴力搜尋題,以為像回溯法一樣找到一棵二叉樹統計寬度,在統計下一顆,貌似不太好辦。考慮到資料不大,直接記錄所有狀態即可。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

typedef pair<

double

,double

> prd;

const

int maxn=7;

const

int inf=

1e9;

int n,vis[

1<;double r,w[maxn]

,sw[

1<;vector tree[

1<;void

dfs(

int s)}}

if(!son) tree[s]

.push_back

(prd(0

,0))

;}intmain()

for(

int i=

1;i<(1

<;i++)}

for(

int i=

1;i<(1

<;i++

) tree[i]

.clear()

;dfs((

1<);

double ans=-1

;for

(auto i:tree[(1

<])

if(ans<0)

printf

("-1\n");

else

}return0;

}

天平難題 UVa 1354

給出房間的寬度r和s個掛墜的重量wi,設計乙個盡量寬 但寬度不能超過房間寬度r 的天平,掛著所有掛墜。天平由一些長度為1的木棍組成。木棍的每一端要麼掛乙個掛墜,要麼掛另外乙個木棍。如下圖所示,設n和m分別是兩端的總重量,要讓天平平衡,必須滿足n a m b。掛墜的寬度忽略不計,且不同的子天平可以相互...

UVa 1354天平難題

參考 主要思想 列舉二叉樹 計算寬度 如果只有1個葉子,直接輸出寬度為0 否則,從第2個 一定有根節點 1 開始一層一層挨個列舉編號為num的節點的值,直到用完所有w。計算寬度時,從最後乙個填入的節點往前計算以它為中心的左右的長度,左邊為負,右邊為正,一直算到根節點 num 1 r 1 l 1 就是...

UVA 1354 困難的秤 位運算列舉子集

題意 給你乙個房間的寬度和n個掛墜的重量,在滿足力矩平衡的條件下,問掛完這些掛墜不超過房間寬度的最長木棍長度之和是多少。注 每根木棍長度為一,且兩端只能懸掛掛墜或者另乙個木棍,這裡的木棍不能水平拼接!只能單獨使用!思路 因題目資料小,所以 列舉二叉樹,由小樹一步步合併為大樹,從頂部向下回溯,有點區間...