這題思維難度很大,關鍵是總結這個性質。
1.天平性質:某個秤砣重量為w,高度為h,如果要讓這個天平平衡並且以這個秤砣為基準,那麼整個天平的總重量為w*(2^h)
2.利用這個性質:題目要求秤砣數量改變最少,就是說盡量多的不改變秤砣重量,把總質量作為主鍵,統計總質量相同的秤砣個數,
最後計算出數量最多的,就是不用改變質量的最大秤砣數量,用所有秤砣數減去不用改變質量的最大秤砣數量就是答案。
3.當然,用這個性質,會讓某些秤砣的質量變為小數。
4.注意,總重量可能會變成long long型別。
ac**:
#include#include#includeusing namespace std;
#define max(x,y) (x) > (y) ? (x) : (y)
typedef long long ll;
const int maxn = 1e6 + 5;
char str[maxn];
mapha;
int node; //numbers of node
void dfs(int l, int r, int h)}}
else
}int main()
printf("%d\n",node - ans);
ha.clear();
}return 0;
}
如有不當之處歡迎指出!
UVA12166 修改天平
修改天平 time limit 3000msmemory limit 0kb64bit io format lld llu 題意 天平類似乙個二叉樹,要求修改最少的節點使天平平衡,可以利用搜尋來一次遍歷每個結點,如果以此節點重量 w 為準,那麼整棵樹的總重量就是 w depth 只要這個總和相等,即...
UVa 12166 修改天平
題意 給乙個深度不超過16的二叉樹,代表乙個天平。每根杆懸掛在中間,每個秤砣的重量已知,至少修改多少個秤砣的重量才能讓天平平衡?要讓天平平衡,必須以其中乙個秤砣作為標準,然後修改其餘的秤砣。當以深度為d,值為x的葉子節點作為標準時,可以發現此時天平的總質量為x 因此可以遍歷二叉樹的每個葉子節點,在這...
DFS特訓 修改天平(UVA12166)方法很巧妙
解題思路 題解思路值得借鑑。因為題目要求最小變動的秤砣數量,所以至少有乙個秤砣是不變的。我們可以固定某乙個子秤砣,根據其深度 確定為dfs引數之一 得到整個天平的重量,若其他子秤砣固定求得的天平重量與其相等,則表示固定某乙個秤砣,其餘這些無需變動。因此我們可以求得各個天平重量出現的次數,即定義乙個m...