【每日一道智力题】之海盗分金币(上)

简介: 【每日一道智力题】之海盗分金币(上)

文章目录


题目:

5个海盗抢到了100枚金币,每一颗都一样的大小和价值。

他们决定这么分:

抽签决定自己的号码(1,2,3,4,5)

首先,由1号提出分配方案,然后大家5人进行表决,当半数以上的人同意时(不包括半数,这是重点),按照他的提案进行分配,否则将被扔入大海喂鲨鱼。

如果1号死后,再由2号提出分配方案,然后大家4人进行表决,当且仅当半超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。

依次类推…

假设每一位海盗都足够聪明,并且利益至上,而且遵守承诺,能多分一枚金币绝不少分,那么1号海盗该怎么分金币才能使自己分到最多的金币呢?

解答:

我们从后向前的模拟每个人的思考:

5号:如果1 2 3号都被鲨鱼吃了,那么那100个金币我肯定得了,因为4号无论怎么投票都会被喂鲨鱼。(超过半数)如果没到4号选择,那么我就选给我金币最多的那个人。

4号:因为如果1 2 3号都被鲨鱼吃掉,自己必死无疑,所以我要支持前面的人来活命,并且金币越多越好。

3号:由于知道4号要活命,一定会投我,所以如果1号,2号死了以后,我的分配为(100 0 0),一定可以以2:1获胜。如果没有死,那我就选金币最多的情况。

2号:我可以推理出3号的想法,他一定会阻止我,不过没关系,我只要让后面几个人支持我就行,所以我的分配为(98 0 1 1)就行。这样我就可以以3:2鹰下比赛。

1号:我可以推理出2号的想法,他一定会阻止我,不过没关系,我只要给后面人多一点钱就行,我的分配是:(97 0 1 2 0)或者(97 0 1 0 2)就可以通过3:2赢下比赛。

没错,只要1号并将提出(97,0,1,2,0)或(97,0,1,0,2)的方案,即放弃2号,而给3号一枚金币,同时给4号(或5号)2枚金币。由于1号的这一方案对于3号和4号(或5号)来说,相比2号分配时更优,他们将投1号的赞成票,再加上1号自己的票,1号的方案可获通过,97枚金币可轻松落入囊中。这无疑是1号能够获取最大收益的方案了!答案是:1号强盗分给3号1枚金币,分给4号或5号强盗2枚,自己独得97枚。分配方案可写成(97,0,1,2,0)或(97,0,1,0,2)。

题目变形:

就是只需要一半人同意即可,不需要一半人以上同意方案就可以通过,在其他条件不变的情况下,1号该怎么分配才能获得最多的金币?

解答:

类似的推理过程

4号:4号提出的方案的时候肯定是最终方案,因为不管5号同意不同意都能通过,所以4号5号不必担心自己被投入大海。那此时5号获得的金币为0,4号获得的金币为100。

5号:因为4号提方案的时候 ,自己获取的金币为0 。所以只要4号之前的人分配给自己的金币大于0就同意该方案。

4号:如果3号提的方案一定能获得通过(原因:3号给5号的金币大于0, 5号就同意 因此就能通过),那自己获得的金币就为0,所以只要2号让自己获得的金币大于0就会同意。

3号:因为到了自己提方案的时候可以给5号一金币,自己的方案就能通过,但考虑到2号提方案的时候给4号一个金币,2号的方案就会通过,那自己获得的金币就为0。所以只要1号让自己获得的金币大于0就会同意。

2号:因为到了自己提方案的时候只要给4号一金币,就能获得通过,根本就不用顾及3 号 5号同意不同意,所以不管1号怎么提都不会同意。

1号:2号肯定不会同意。但只要给3号一块金币,5号一块金币(因为5号如果不同意,那么4号分配的时候,他什么都拿不到)就能获得通过。

所以答案是 98,0,1,0,1。

总结

这就是今天的每日一道智力题。以后遇到类似的问题也可用类似的推理,并不难。

建立此专栏的初衷是为了监督自己每天认真学一道题,积少成多。并把自己的收获以博客的形式分享出来,帮助更多人,以及方便后续复习。如果有兴趣的同学可以订阅此专栏,大家一起交流,进步和学习!

专栏:链接: 每日一题

目录
打赏
0
0
0
0
23
分享
相关文章
蓝桥杯分糖果、最小化战斗力差距、小蓝零花钱
这是一个关于算法问题的集合,包括三个不同的任务: 1. **分糖果**:肖恩有不同种类的糖果要分给学生,目标是使得到糖果字符串的字典序最大且尽量小。给定糖果种类数和一个初始字符串,输出能达到的最小字典序的最大值。 2. **最小化战斗力差距**:小蓝需要将队员分为两组,每组战斗力差距最小。给定队员数量和战斗力值,找出最小的战斗力差距。 3. **小蓝的零花钱**:小蓝要在序列中分割偶数和奇数,每次分割代价是两端元素差的绝对值。目标是在预算内确定最多能进行多少次这样的分割。 每个问题都提供了输入输出示例和相应的C++代码片段来解决这些问题。
|
11月前
代码随想录Day29 贪心04 LeetCode T860 柠檬水找零 T406 根据身高重建队列 T452 用最少得箭引爆气球
代码随想录Day29 贪心04 LeetCode T860 柠檬水找零 T406 根据身高重建队列 T452 用最少得箭引爆气球
56 0
L2-028 秀恩爱分得快 (25 分)
L2-028 秀恩爱分得快 (25 分)
180 0
算法题每日一练---第24天:海盗分金币
5 个海盗,相约进行一次帆船比赛。比赛中天气发生突变,他们被冲散了。
323 0
算法题每日一练---第24天:海盗分金币
leetcode 1921. 消灭怪物的最大数量(每日一题)
leetcode 1921. 消灭怪物的最大数量(每日一题)
106 0
(拯救选择困难症)随机选择今天中午吃啥
(拯救选择困难症)随机选择今天中午吃啥
(拯救选择困难症)随机选择今天中午吃啥
代码随想录刷题|LeetCode 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
代码随想录刷题|LeetCode 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
代码随想录刷题|LeetCode 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
PTA 7-1 祖传好运 (15 分)
我们首先定义 0 到 9 都是好运数,然后从某个好运数开始,持续在其右边添加数字,形成新的数字。
168 0
假币问题:有n枚硬币,其中有一枚是假币,已知假币的重量较轻。现只有一个天平,要求用尽量少的比较次数找出这枚假币。
(2)当n为奇数时,将前后两部分,即1…n,放在天平的两端,较轻的一端里有假币,继续在较轻的这部分硬币中用同样的方法找出假币;若两端重量相等,则中间的硬币,即第 (n+1)/2枚硬币是假币。n,放在天平的两端,较轻的一端里有假币,继续在较轻的这部分硬币中用同样的方法找出假币;假币问题:有n枚硬币,其中有一枚是假币,已知假币的重量较轻。:因为30位偶数,所以至少要被分一次,然后成为奇数之后,那个假币就是奇数的中位数,所以只需要2次。若输入的硬币数为30,则最少的比较次数为(2),最多的比价次数为(4)。
615 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等