• UESTC--1253--阿里巴巴和n个大盗 (博弈)


    

    阿里巴巴和n个大盗

    Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu

    Status

    Description

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

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

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

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

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

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

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

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

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

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

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

    Input

    两个整数n, m,分别表示n个大盗和m个宝石(1 leq n leq 2 cdot m-2, 2 leq m leq 100)。

    Output

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

    Sample Input

    4 100

    Sample Output

    97

    Hint

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

    Source

    第七届ACM趣味程序设计竞赛第二场(正式赛)

    #include<iostream>
    using namespace std;
    int main()
    {
    	int n,m;
    	while(cin>>n>>m)
    	{
    		n++;
    		if(n==2)
    		cout<<-1<<endl;
    		else if(n==3)
    		cout<<m<<endl;
    		else cout<<m-(n+1)/2<<endl;
    	}
    	return 0;
    }

  • 相关阅读:
    Asp.Net基础 9.Web开发原则
    JavaScript – 1.事件 + 2.变量 + 3.判断变量初始化 + 4.函数的声明 + 5.匿名函数
    DOM – 3.window对象的属性
    Dom – 1.window对象事件 + 2.body、document对象的事件
    faint
    开会
    it's over
    so funny
    no topic
    震惊:有良医生揭无良献血内幕!
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273421.html
Copyright © 2020-2023  润新知