题目大意:
就是现在n个海盗分配m枚金币, 依次编号为P1~Pn
然后海盗按照Pn->P(n - 1)->...->P2->P1的顺序提出分配方案, 然后或者的海盗投票表示是否赞成这个方案, 提出方案的海盗也会参与投票, 如果有一半或者以上的海盗赞成, 那么这个方案就通过, 按照这个方案分配金币, 否则这个海盗会被扔进海里喂鲨鱼, 各个海盗都决定聪明并且想使得自己的利益最大化, 当然这里各个海盗首先要能够存活才会考虑使得自己的金币尽量多, 问P(p)编号的海盗最后会获得多少个金币(当有多个可能时输出最少的)
大致思路:
首先当m个海盗按照经典的海盗分金问题进行分配的时候, 如果m个金币够分, 也就是说n <= 2*m的时候, 不会有什么问题, 第n个海盗分得最多的钱, 和Pn间隔为偶数的获得1金币, 其他0金币
那么整个问题变复杂的地方出现在当m个金币不够分的情况也就是当n > 2*m的时候
当n == 2*m + 1的时候, 第n个人只有将所有m个金币分给2*m个人的情形下没有金币的m个人, 每人一金币, 才能活命, 否则某个海盗在让第n个人死的情形下自己的利益没有变化, 那么n的方案就会被反对, 那样反对票回避支持多一票, Pn就死了, 所以Pn为了活命只能给所有Pi(i是奇数)的人分1金币保证自己不死
当n == 2*m + 2的时候, Pn需要把自己的m个金币分给在n == 2*m + 1情形下没有金币的人, 才能加上自己的票保证不死, 那么n == 2*m + 1情形下有m + 1个人没有金币, 也就是说, m个金币给这些人的时候这m + 1个人也都是有可能没有金币的, 所以询问n == 2*m + 2清醒下的每一个人答案都是0
当n == 2*m + 3时, Pn最多将m个金币分给n == 2*m + 2情形下一定拿不到金币的m个人, 那么