题目名称 781. [SOJ 1140] 国王的遗产
输入输出 legacy.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarcqw 于2012-04-19加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:6, 提交:12, 通过率:50%
Gravatar☭寒冰烈火☭ 100 0.066 s 1.15 MiB C++
GravatarSkyo 100 0.127 s 1.12 MiB C++
GravatarMagic_Sheep 100 0.153 s 1.40 MiB C++
Gravatarwuzuofan 100 0.218 s 1.69 MiB C++
Gravatarwuzuofan 100 0.244 s 1.69 MiB C++
Gravatarkaaala 100 0.260 s 0.98 MiB C++
GravatarSkyo 80 0.131 s 1.12 MiB C++
GravatarSkyo 80 0.140 s 1.12 MiB C++
Gravatarwuzuofan 80 0.214 s 1.69 MiB C++
GravatarSkyo 60 0.219 s 1.12 MiB C++
本题关联比赛
20120419s
关于 国王的遗产 的近10条评论(全部评论)
水过。。其实我的代码是有问题的。。那个判断编号最小神马的太麻烦。。。中间两次交WA2个点就是因为这个。。
GravatarSkyo
2015-10-16 15:29 1楼

781. [SOJ 1140] 国王的遗产

★★☆   输入文件:legacy.in   输出文件:legacy.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

哈丁国的国王一生善于管理,勤于政务,于是聚积了大量的财富。但他众多的孩子都不争气,相互间时常勾心斗角,却没有一个真正能接受国王传位的人。为了避免将来某儿子一人独揽大权,又出于不能让权力过度分散的考虑,临终前,国王决定将他一生的财富打造出了一条很大的金块链,这条金块链的形状比较特别,它由n块大块的黄金组成,国王准备了n-1条链条,将某些相邻的两块大黄金用链条连接起来,最后构成一条连通的金块链,如图5.8.1所示。

图5.8.1国王的遗产金块链示意图

国王对每块黄金编上号(1~n),然后立下了遗嘱:

(1)儿子们按照年龄大小顺序,在现存的金块链中获得遗产。

(2)对于某个儿子,他可以在现存金块链中剪掉某条链条,获得不超过现有金块总数一半的那一部分。

(3)某个儿子取得他那部分金块后,剩下的部分由他后面的弟弟们继续操作。

(4)最后一个儿子获得剩下的那些金块,国王将保证每个儿子都能获得遗产。

国王的儿子们都是贪婪的,他们都会选取使自己得到最多的金块的那条链条来剪,当然,有时选取的方案不是惟一的,但是儿子们都会选择使自己获得的“金块组编号”最小的那一条链来剪。“金块组编号”大小定义为:对于长度相同为L的两个有序数组A和B,A<b当且仅当存在一个整数i(0<i≤l),使得a[1]=b[1],···,a[i-1]=b[i-1]且a[i]<b[i]。


【输入】

输入格式(输入文件名legacy.in)

输入数据第1行为一个整数n(1≤n≤30000)和一个整数k(1≤k≤100),分别表示金块的总数与国王儿子的数量。接下来n-1行,每行两个整数x和y,表示编号为x的金块与编号为y的金块用链条连接起来。


【输出】

输出格式(输出文件名legacy.out)

输出数据只有一行,包含有k个整数,分别表示每个儿子获得金块的数量(由大儿子到最小的儿子)。


【输入输出样例】

输入(legacy.in)

6 3

1 2

2 3

3 4

2 5

3 6

输出(legacy.out)

3 1 2