1.题目描述:点击打开链接
2.解题思路:本题利用dfs解决,不过思维上要发挥一些创造性。本题问至少要修改的砝码个数,那么首先可以想到要选一个基准砝码,其他所有的砝码都试图根据这个基准法吗而改变。不过本题的巧妙之处就在这里,只要以深度为depth(depth从0开始)重量为w的砝码为基准,那么就能求出整个天平的总重量,即w*2^(depth),在代码中可以简洁地表示为w<<depth。这样,我们只用统计每个可能的总重量对应了多少不需要改动的砝码,设一共有sum个砝码,总重量为sumw的天平对应的砝码个数是base[sumw],那么最终答案就是sum-max{base[i]}(i为所有可能的天平总重量)。本题在统计之前需要用dfs后序遍历该表达式。
本题的解法有点类似于找每个元素的某个贡献值的大小(在本题中贡献值就是以它为基准算出的天平总重量),同时统计该贡献值下元素有几个,那么最后取最优值即可。这种思维也是竞赛中的常见思维,应予以重视。
3.代码