题目链接:http://www.topcoder.com/stat?c=problem_statement&pm=10361
解题思路:
最开始我想通过对砍掉的树数从小到大进行枚举,最大可以达到2^40,枚举量太大了。
改变思路,通过枚举fence的大小,对fence外的和内的分别做处理,岂不是一个很好的思路。为了减少时间,可以在枚举前对tree按照height从大到小进行排序。同时枚举的时候可以保证后面的边比前面的大,也可以减少不少的枚举量。最后本题开始我用了两个函数outer()和inner()导致超时,直接把判断放到if里面就可以了,my god!
优化后的:
带函数,超时!!!