UESTC1253 博弈

阿里巴巴和 n n个大盗来到了一个藏满宝石的洞穴。洞里一共有 m m颗价值连城的宝石,每一颗都等价。盗亦有道,为了奖励帮忙打开洞穴门的阿里巴巴,大盗们决定让他一起加入分赃。大盗们决定采用一种方式分赃,分赃的方式如下:

1)每个人由抽签决定了自己的号码( 1 1, 2 2, 3 3, , n+1 n+1)。

2)由 n+1 n+1号提出分配方案,然后大家表决,当且仅当超过半数的人同意时(包括他自己),按照他的方案进行分配,否则这个人将被杀死。

3) n+1 n+1号死后,由 n n号接替 n+1 n+1号对剩下的人提出分配方案,类似 2 2步骤。以此类推。

大盗们都有如下的几个性格特点

1)足智多谋,总是采取最优策略。

2)贪生怕死,尽量保全自己性命。

3)贪得无厌,希望自己得到越多宝石越好

4)心狠手辣,在自己利益最大的情况想希望越多人死越好。

5)疑心多虑,不信任彼此,尽量确保自身利益不寄希望与别人给自己更大利益。

不知道是不幸还是幸运,阿里巴巴抽到了 n+1 n+1号签,意味着他将第一个提出分配方案。他想请教机智的你,他能否活下来,如果能又将获得最多多少个宝石?

Input

两个整数 n n, m m,分别表示 n n个大盗和 m m个宝石( 1n2m2 1≤n≤2⋅m−2, 2m100 2≤m≤100)。

Output

如果阿里巴巴能活下来输出一个整数 x x表示阿里巴巴最多获得的宝石数,否则输出 1 −1

Sample Input
4 100
Sample Output
97
Hint

分配方案 0 2 1 0 97 或2 0 1 0 97(从 1 1号到 5 5号)。

当(n+1)是偶数时阿里巴巴只要给1到n号人1,1,0,1,0,1,0....0即可;注意这里以 0 结尾  ;此时 m-(n+1)/2。
当(n+1)是奇数时只要给x,x,1,x,1,x,1....0(任意一个x是2,其余x都是0) ;   此时m-(n+2)/2。 

#include<cstdio>

int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    if(n==1) printf("-1");
    else if(n==2) printf("%d",m);
    else if(n==3) printf("%d",m-2);
    else if(n==4) printf("%d",m-3);
    else 
	{
        if(n%2==1)printf("%d",m-(n+1)/2);
        else printf("%d",m-(n+2)/2);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值