題意:給乙個深度不超過16的二叉樹,代表乙個天平。每根杆懸掛在中間,每個秤砣的重量已知,至少修改多少個秤砣的重量才能讓天平平衡?
要讓天平平衡,必須以其中乙個秤砣作為標準,然後修改其餘的秤砣。當以深度為d,值為x的葉子節點作為標準時,可以發現此時天平的總質量為x《因此可以遍歷二叉樹的每個葉子節點,在這裡可以使用map容器,計算出秤砣總質量m所出現的次數,並且記錄葉子節點數量number。這樣,最後(number-map容器中最大的數)即為修改的最少次數。
一開始我不明白為什麼要w*10,直接w<
1 #include2 #include3 #include4 #include5 #include6
using
namespace
std;78
intnumber;
9string
line;
10 maplong, int>ans;
1112
void dfs(int depth, int s, int
length)
1326}27
}28else35}
3637
intmain()
3854 cout << number - maxn <56return0;
57 }
UVA12166 修改天平
修改天平 time limit 3000msmemory limit 0kb64bit io format lld llu 題意 天平類似乙個二叉樹,要求修改最少的節點使天平平衡,可以利用搜尋來一次遍歷每個結點,如果以此節點重量 w 為準,那麼整棵樹的總重量就是 w depth 只要這個總和相等,即...
DFS特訓 修改天平(UVA12166)方法很巧妙
解題思路 題解思路值得借鑑。因為題目要求最小變動的秤砣數量,所以至少有乙個秤砣是不變的。我們可以固定某乙個子秤砣,根據其深度 確定為dfs引數之一 得到整個天平的重量,若其他子秤砣固定求得的天平重量與其相等,則表示固定某乙個秤砣,其餘這些無需變動。因此我們可以求得各個天平重量出現的次數,即定義乙個m...
UVA 12166 天平性質 字元處理
這題思維難度很大,關鍵是總結這個性質。1.天平性質 某個秤砣重量為w,高度為h,如果要讓這個天平平衡並且以這個秤砣為基準,那麼整個天平的總重量為w 2 h 2.利用這個性質 題目要求秤砣數量改變最少,就是說盡量多的不改變秤砣重量,把總質量作為主鍵,統計總質量相同的秤砣個數,最後計算出數量最多的,就是...