RT,@L_h_ 的 代码 采用的贪心是错误的。本题的正确方法为以 1 为根开始贪心,但他以度数最大的点为根开始贪心,会造成与父亲和儿子节点相关的错误,然而这份代码能过。
卡法:
令度数最大的点为 x,令 da 表示 a 的度数,@L_h_ 的贪法不成立当且仅当:
log2(d1−1)+log2(dx)=log2(d1)+log2(dx−1)
观察到当 d1=2k 时,且 dx=2g+1 时该柿子是成立的,左侧等于 k+g−1,右侧等于 k+g。同理,d1=2k+1,dx=2g 也可以卡掉。
可以用如下数据卡掉这类贪法:
13
1 2
1 3
1 4
1 5
5 6
5 7
5 8
5 9
5 10
5 11
5 12
5 13
正确输出为 19,刚刚那种贪法输出为 18。