@owaski
2016-09-22T14:20:19.000000Z
字数 957
阅读 812
题解
很显然这是一棵树,而且个数是相同的。
想一下如果要求做法的话,我们有一个很好的贪心做法,就是最开始一棵空树,然后每次选权值最小的链,将其扩展出两个孩子。
仔细思考一下这个做法,我们发现假如我们给树上每个节点的权值定义为到根权值和,那么除去所有的叶子结点,其他的非叶子结点可以看成是权值从小到大依次出现的,因为根据前面的那个贪心做法,我们是从小到大扩展了所有的非叶子结点。
那么考虑非叶子结点权值和,假设根节点权值为,那么还要加上才能满足要求(因为考虑以某个节点为根的子树,那么他自己的贡献被计算了子树大小次,然而叶子结点是=非叶子结点+1的,因为这个1的差距我们要加上这个东西)。
那么现在我们的问题就是求出权值从小到大的个点的和即可,假设。
考虑二分一下最大的权值,假设为,求出所有的结点个数,找到第一个的即可。
根据贪心原理,那么一条链上的个数不会超过,因此我们可以枚举的个数,然后求出个数的上界,求出这个东西: