Codeforces Round #665 (Div. 2) -- D. Maximum Distributed Tree

前置知识

a. 树上的任意一条边,在计算所有点之间的距离之和时,计算次数为去掉这个边之后断开的两部分树的大小的积
b. 排序不等式

题意

给你一棵树,分配边权,使所有点之间的距离之和最大

思路

先算出所有边在计算时计算的次数,按排序不等式的规律和边权作积即可
难点在于,讨论 m m m n − 1 n-1 n1 的大小关系

  • m < = n − 1 m<=n-1 m<=n1时比较好考虑,不够的用 1 1 1 填充
  • m > n − 1 m>n-1 m>n1 时,可以猜想,将前面多出来的部分乘到最左边,让计算次数最多的边权值最大,就是最优方案

代码
考完试补

你可能感兴趣的:(codeforce,acm竞赛,算法)