题目大概说一棵树,树边有费用和收益两个属性,求一条收益和最大的路径满足费用和不超过C. 树上任意两点的路径都可以看成是过某一个子树根的路径,显然树分治. 治的时候要解决的一个问题是,找到费用小于等于某个数且收益最大的值. 这个很容易想到用线段树,不过不想写线段树.. 想了想,想到可以先排序,从小到大去找,之前找到哪现在就继续从那儿开始找,这样最多也就遍历一遍待查找数组,具体看代码. 两次排序占大头,最后时间复杂度是O(nlog2n). WA了一次,因为只考虑了两端都过根的路径,忽略了一端点是根的…