zoukankan      html  css  js  c++  java
  • 逻辑分析推理(海盗分金问题)

    题目原形:

    5 个海盗,分 100 个金子,他们依次提出一个方案,如果有一半或以上的人同意就通过,通不过则把提出方案的海盗丢到海里,再继续分金子。

    海盗首先希望生存,然后希望利益最大化,那么第一个海盗应该怎么提分金子的方案?

    解答分析的过程如下:

    如果从第一个海盗开始分析的话,他肯定是希望自己得到全部的金子,那么其他海盗必然不同意,他肯定会被仍到海里,为求生存,他必然要分给其他海盗一些金子,要怎么分?

    这就是关键了,其实这里是遗漏了一个很重要的一点就是,要考虑每一个海盗的想法,也就是说他们要获得多少金子以后才会支持第一个海盗。

    因此这里的分析应该是从最后的那个海盗的想法开始分析。

    假设 5 个海盗为 A、B、C、D、E。

    作为最后一个海盗 E,他肯定希望前面的海盗全部死掉,这样他就可以拿全部的金子,但这是不可能的,至少他前面的海盗 D 肯定可以在他之前拿走所有的金子。

    若只剩下 D 和 E 海盗,D 肯定是把所有的金子都据为己有,因为即便不分一个金子给 E,他的得票率也是 50%,所以,E 不会让 C 海盗死掉,(这样就会有 C、D、E 三个海盗来分),

    C 为了得到票率,肯定也会分一些给 E 的(当然 C 也可以考虑分给 D 一些,但是分给 D 多少呢?而且 C 是希望自己的利益最大化的,而 D 总是希望 C 死掉的,所以 C 不分给D)。

    同样,如果只剩下 C、D、E,D 肯定不会同意 C 的提议,因为 D 是希望 C 死掉的,那么 C 只需要给 E 一个金子,E 就可以支持 C,从而达到超过 50% 的支持率,

    这样 D 就拿不到任何的金子,所以 D 就会考虑,不会希望 C 的上级 B 死掉,不然他一个金子也没有了。

    这样就成了 B、C、D、E 四个海盗分金子,C 肯定不会同意 B 的提议,因为 C 是希望 B 死掉的。那么,B 为了得到 50% 的支持率,他至少也要拉拢一个人,这个人就是 D,
    因为 D 不希望 B 死掉,所以 B 的 分配方案会是:99:0:1:0。但是 B 不能给 E,这是因为即使 B 死掉了,E 也可以得到一个金子,

    若要得到 E 的支持,就需要给 E 两个金子,B 的利益就减少了。

    此时再来考虑 A、B、C、D、E 五个海盗分金子的情况,A 想活下来就必须要得到至少另外的 2 名海盗的支持,其中, B 是不考虑的,因为 B 是必然希望 A 死掉的,这样 B 就能得到最多的金子。

    而 C 却好收买,因为上一轮的分析中, C 没有得到金子,所以只需要给他一个金子即可。对于 D、E 来说,收买 E 会更容易一些,因为在上一轮的分析中,他没有得到金子,

    并且他是和 C 利益相关的一个海盗,所以他保全 A 是最好的选择,至少能得到一个金子。因此得到最后的结果就是:98:0:1:0:1。

    通过以上分析可以看到这样一类的题的这样一个分析过程。

    一下是题目的一个参考性的答案:

    ① 如果只剩下 D、E 海盗方案为:100:0

    ② 如果只剩下 C、D、E 海盗方案为:99:0:1

    ③ 如果只剩下 B、C、D、E 海盗方案为:99:0:1:0

    ④ 如果是 A 海盗提议的话方案为:98:0:1:0:1

    解答完毕。

  • 相关阅读:
    poj 3411 Paid Roads
    uva 111 A History Grading
    hdu 4248 A Famous Stone Collector
    阶乘模版
    uva Coin Change
    POJ图论分类
    求 组合数 dp
    判断点是否在三角形中(三角形的有向积计算)
    扩展欧几里德
    UVA 116 Unidirectional TSP (白书dp)
  • 原文地址:https://www.cnblogs.com/icenter/p/2016362.html
Copyright © 2011-2022 走看看