2-10. 海盗分赃(25) (ZJUPAT 数学)

题目链接:http://pat.zju.edu.cn/contests/ds/2-10

P个海盗偷了D颗钻石后来到公海分赃,一致同意如下分赃策略:

首先,P个海盗通过抽签决定1-P的序号。然后由第1号海盗提出一个分配方案(方案应给出每个海盗分得的具体数量),如果能够得到包括1号在内的绝对多数(即大于半数)同意,则按照该分配方案执行,否则1号将被投入大海喂鲨鱼;而后依次类似地由第2号、第3号等等海盗提出方案,直到能够获得绝对多数同意的方案出现为止,或者只剩下最后一位海盗,其独占所有钻石。请编写一个程序,给出第1号海盗的钻石分配方案中自己分得的钻石数量。

附带的三个假定:

1) “聪明”与“贪婪”假定:每个海盗总能够以本人利益最大化作为行为准则;

2) “人性化”假定:在能够取得尽量多钻石的情况下,海盗不会故意致同伙于死地;

3) “无偏见”假定:海盗之间没有个人恩怨,分给其他海盗钻石的次序以小序号优先为原则。

输入格式说明:

输入2个正整数D和P(3<=P<=D<=100)。

输出格式说明:

输出第1号海盗的钻石分配方案中自己分得的钻石数量。

样例输入与输出:

序号 输入 输出
1
10 7
6
2
3 3
2
3
100 3
99
4
100 100
49

PS:

当只有三个海盗的时候需要特判,因为只有三个海盗的时候,第一号只需要给另外两个人中的一个人一颗钻石就可以了! 其余时候均需给一半的海盗中的其中一人两颗钻石,一半中的另外的海盗每人一颗钻石!

代码如下:

#include <cstdio>
int main()
{
    int D, P;
    while(~scanf("%d%d",&D,&P))
    {
        int ans;
        if(P == 3)
        {
            ans = D-P/2;
        }
        else
            ans = D-(P)/2-1;
        printf("%d\n",ans);
    }
    return 0;
}
时间: 2024-10-15 02:40:21

2-10. 海盗分赃(25) (ZJUPAT 数学)的相关文章

进阶实验2-3.1 海盗分赃 (25分)

P 个海盗偷了 D 颗钻石后来到公海分赃,一致同意如下分赃策略: 首先,P 个海盗通过抽签决定 1 - P 的序号.然后由第 1 号海盗提出一个分配方案(方案应给出每个海盗分得的具体数量),如果能够得到包括 1 号在内的绝对多数(即大于半数)同意,则按照该分配方案执行,否则 1 号将被投入大海喂鲨鱼:而后依次类似地由第 2 号.第 3 号等等海盗提出方案,直到能够获得绝对多数同意的方案出现为止,或者只剩下最后一位海盗,其独占所有钻石.请编写一个程序,给出第 1 号海盗的钻石分配方案中自己分得的钻

(算法)海盗分赃_2

分享一篇趣文(来自伯乐在线:http://blog.jobbole.com/70395/),同样是海盗分赃问题,这篇文章以诙谐幽默的口吻以及浅显易懂的对话来解释海盗分赃问题. 与上一篇博文海盗分赃_1不同的是,这里的投票规则为半数即可,并不要求大于半数.因此该问题的思路过程结果为: (300,0) (299,0,1) (299,0,1,0) (298,0,1,0,1) (298,0,1,0,1,0) 文章如下: #算法题# 6个海盗要分赃300金币.规则是由资格最老的海盗提出各人分到的数量,然后

【博弈】海盗分赃

题目大意:有N(N<=1000)个贪婪的海盗,他们得到了100,000个金币,决定分赃.他们都很精明,都想自己利益最大化,并采取如下策略: 1. 首先N人排好次序. 2. 由编号最大者给出分赃方案. 3. 所有人表决,50%及以上的人赞成就分赃成功,否则转4. 4. 杀掉提案者(总人数少了1),转2. 你的任务:判断第几号海盗得最多金币,有多少个. 题解:此题需要绕一个小弯,首先,获得钱最多的一定是第一个人.其次,他只需给所有奇数号的人一枚金币.可以YY一下,奇数永远都受偶数的限制,他们非常可能

1010. 一元多项式求导 (25) (ZJUPAT 数学求导)

题目链接:http://pat.zju.edu.cn/contests/80/1010 设计函数求一元多项式的导数. 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格. 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 代码如下: #include <cstdio> #include <cma

1005. 继续(3n+1)猜想 (25) (ZJUPAT 数学)

题目链接:http://pat.zju.edu.cn/contests/pat-b-practise/1005 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对n=3进行验证的时候,我们需要计算3.5.8.4.2.1,则当我们对n=5.8.4.2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我们称5.8.4.

bnu24252 海盗分赃

题目链接:http://www.bnuoj.com/v3/problem_show.php?pid=24252 这是四川2012年省赛的一道题,背景:海盗分宝藏.大概题意:给你N种价值的物品,物品有两个属性,一个是数量,一个是价值(价值是以2的ai次方表示的).为了公平起见,求出宝藏分配的最小差(二进制表示). 思路:当我们把宝藏合成后,即2*2^(n-1)宝藏=1*2^n宝藏(即二进制的进位处理),如果价值最大的宝藏可一分为二,那么该宝藏不会影响最终的结果(即该部分差值为0),如果价值最大的宝

(算法)海盗分赃_1

题目: P个海盗偷了D颗钻石后来到公海分赃,一致同意如下分赃策略: 首先,P个海盗通过抽签决定1-P的序号.然后由第1号海盗提出一个分配方案(方案应给出每个海盗分得的具体数量),如果能够得到包括1号在内的绝对多数(即大于半数)同意,则按照该分配方案执行,否则1号将被投入大海喂鲨鱼:而后依次类似地由第2号.第3号等等海盗提出方案,直到能够获得绝对多数同意的方案出现为止,或者只剩下最后一位海盗,其独占所有钻石.请编写一个程序,给出第1号海盗的钻石分配方案中自己分得的钻石数量. 附带的三个假定: 1)

Python-EEG工具库MNE中文教程(10)-信号空间投影SSP数学原理

目录 projector(投影)和投影背景 案例解释投影原理 导入工具库 什么是projector(投影)? 计算正交平面 使用SVD计算投影矩阵 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区(微信号:Brain_Computer).QQ交流群:903290195 projector(投影)和投影背景 projector(投影)(简称proj),也称为信号空间投影(SSP),定义了应用于空间上的EEG或MEG数据的线性操作. 可以将该操作看做是一个矩阵乘法,通过将数据投影到较低维度的

2-07. 素因子分解(20) (ZJUPAT 数学)

题目链接:http://pat.zju.edu.cn/contests/ds/2-07 给定某个正整数N,求其素因子分解结果,即给出其因式分解表达式 N = p1^k1 * p2^k2 *-*pm ^km. 输入格式说明: 输入long int范围内的正整数N. 输出格式说明: 按给定格式输出N的素因式分解表达式,即 N = p1^k1 * p2^k2 *-*pm ^km,其中pi为素因子并要求由小到大输出,指数ki为pi的个数:当ki==1即因子pi只有一个时不输出ki. 样例输入与输出: 序