2462 海贼分金
时间限制 : 2000/1000 MS(Java/Others) | 内存限制 : 131072/65536 KB(Java/Others)
提交数 : 139 | 通过数 : 60
题目描述
经济学上有个“海盗分金”模型,是说5个海盗抢得100枚金币,他们按抽签的顺序依次提方案:首先由1号提出分配方案,然后5人表决,超过半数同意方案才被通过,否则他将被扔入大海喂鲨鱼,依此类推。(摘自百度百科)
从这个模型上可以衍伸出许多版本,但大多数版本都有一个共同特点,就是在获得金币数相同的情况下,海盗会选择让尽可能多的同伴死亡。商学院的索罗斯同学看到后觉得这过于残忍黑暗,让他幼小的心灵受到了巨大创伤,因此他基于这个模型搞出了一个“海贼分金”问题。众所周知,海盗的目的是抢钱,而海贼的目的是成为海贼王,成为海贼王自然少不了同伴的帮助,因此海贼们会尽可能的减少同伴的伤亡。
索罗斯提出的问题如下:
N个海贼抢到了M枚金币,他们按抽签的顺序依次提方案:首先由1号提出分配方案,然后所有活着的人表决,超过半数同意方案才被通过,否则他将被扔进海水喂鲨鱼,依此类推。所有盗贼都绝顶聪明,他们在保住自己性命的前提下想得到尽可能多的金币,在得到最多金币的前提下会尽可能的减少同伴的死亡。
请问,如果所有海贼都执行最优策略的话,1号海贼能分得多少金币?
输入要求
两个整数N,M,分别表示海贼人数和抢得的金币数。(1<=N,M<=1000)
输出要求
一个整数,表示最优策略下1号海贼分得的金币数。如果1号海贼肯定会被扔进海里则输出-1。
输入样例
2 100
输出样例
0
提示
只要2号海贼不同意1号海贼的方案他就可以把1号海贼扔进海里,然后获得全部100个金币。
但如果1号海贼分给自己0个金币,分给2号海贼100个金币,那么在同样获得100个金币的情况下,出于减少同伴死亡的考虑,2号海贼会同意1号海贼的这种分配方案。
来源
信息学院第五届程序设计大赛
[ 返回顶端 ] | [ 代码提交 ] | [ 统计数据 ] | [ 历史提交 ]