经典海盗分金问题(hdu 1538)

HDU 1538 A Puzzle for Pirates(经典的海盗分金推理) 转载请注明出处,谢谢 http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents           by---cxlove 题目:这是一个经典问题,有n个海盗,分m块金子,其中他们会按一定的顺序提出自己的分配方案,如果50%以上的人赞成,则方案通过,开始分金子,如果不通过,则把提出方案的扔到海里,下一个人继续。 http://acm.hdu.edu 阅读详情

别人博客讲的非常详细
题意:这是一个经典问题,有n个海盗,分m块金子,其中他们会按一定的顺序提出自己的分配方案,如果大于等于50%的人赞成,则方案通过,开始分金子,如果不通过,则把提出方案的扔到海里,下一个人继续。
思路:上面那篇博客已经讲的非常详细了;

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int x[15]= {2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
int main()
{
    int ncase;
    scanf("%d",&ncase);
    while(ncase--)
    {
        int n,m,p;
        scanf("%d%d%d",&n,&m,&p);
        if(n<=2*m)//金币够贿赂
        {
            if(p==n)
                printf("%d\n",m-(n-1)/2);
            else if(p%2==n%2)
                printf("1\n");
            else
                printf("0\n");
        }
        else if(n==2*m+1)//金币刚好够贿赂并保证自己不死
        {
            if(p==n)
                printf("0\n");
            else if(p%2==n%2)
                printf("1\n");
            else
                printf("0\n");
        }
        else if(n>2*m+1)//金币不够贿赂,利用必死的人的心理让自己尽可能存活
        {
            int t=n-2*m,flag=0;
            for(int i=0; i<15; i++)
            {
                if(t==x[i])
                    printf("0\n");
                flag=1;
                break;
            }
            if(!flag)
                for(int i=0; i<15; i++)
                {
                    if(t<x[i])
                    {
                        if(p>x[i-1]+2*m&&p<x[i]+2*m)
                            printf("Thrown\n");
                        else
                            printf("0\n");
                        break;
                    }
                }
        }
    }
}
经典海盗分金C++源码 经济学上有个“海盗分金”模型,是说5个海盗抢得100枚金币,他们按抽签的顺序依次提方案:首先由1号提出分配方案,然后5人表决,超过半数同意方案才被通过,否则他将被扔入大海喂鲨鱼,依此类推。“海盗分金”其实是一个高度简化和抽象的模型,体现了博弈的思想。在“海盗分金”模型中,任何“分配者”想让自己的方案获得通过的关键是事先考虑清楚“挑战者”的分配方案是什么,并用最小的代价获取最大收益,拉拢“挑战者”分配方案中最不得意的人们。 此源码用递归来是实现,即假如5个海盗,第5个人拉拢第4个人分配基础上上得金最少的5/2即2个人,每人原有基础上多得一个金,其余不在拉拢范围的人得0个金来保证自己得金最多,第4个则在第三个海盗基础上拉拢4/2=2个人,每人多得1金,其余不得, 这样依次类推写成程序里的递归算法。 立即下载

相关推荐

海盗分金源代码

海盗分金的故事 5个海盗抢到了100个金币,每一颗都一样的大小和价值连城。 他们决定这么分: 1。抽签决定自己的号码(1,2,3,4,5) 2。首先,由1号提出分配方案,然后大家5人进行表决,当且仅当半数和超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。 3。如果1号死后,再由2号提出分配方案,然后大家4人进行表决,当且仅当半数和超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。 4。依次类推...... 问题:第一个海盗提出怎样的分配方案才能够使自己的收益最大化 条件:每个海盗都是很聪明的人,如果前面的人提出的方案对自己没好处肯定会否决,如果好处比后面持续下去的方案好就投票。 二、题目 1.给出5个海盗分配100个金币的算法、过程和分析。 2. 改变一下规则,投票中方案必须得到超过50%的票数(只得到50%票数的方案的提出者也会被丢到海里去喂鱼),那么如何解决5个海盗分100枚金币的问题? 3. 不改变规则,如果让100个海盗分100枚金币,会发生什么? 4. 如果每个海盗都有1枚金币的储蓄,他可以把这枚金币用在分配方案中,如果他被丢到海里去喂鱼,那么他的储蓄将被并在要分配的金币堆中,这时候又怎样?

海盗分金币问题 编程+思路 C++

来自招银网络科技笔试测试岗位的一道题目: 海滩上有一堆金币,n个海盗来分。第一个海盗把这堆金币平均分成3份,如果不够就从自己口袋拿出来补齐,并拿走了一份。第二个海盗把剩下的金币又平均分成3份,如果不够再从自己口袋补齐,并拿走了一份,第三个、第四个、第五个。。。所有海盗都是这样做的,最后一个海盗分完之后拿到100个金币,问海滩上原来最少有多少枚金币? 输入正整数n,输出海滩上原来最少的金币数量。 ...

weixin_43832437的博客 2426

2025软考信息安全工程师真题

2025信息安全工程师软考真题

qq_40424393的博客 1706

算法练习:海盗分金问题(约瑟夫问题)

每一个恶魔都非常的贪婪,渴望得到尽可能多的金币,同时每一个恶魔又都非常的狡猾,他们都会选择对自己最有利的情况进行投票。否则,该方案不会被执行。如果方案没有被执行,那么提出方案的恶魔老大将会被恶魔们杀死,他不配成为恶魔老大。剩下恶魔中编号最小的恶魔将会成为新的恶魔老大,然后重新按照上述规则,重新由新的恶魔老大提出新的方案进行操作,直到剩下最后一个恶魔或者有一个恶魔老大的方案被同意执行,那么分配结束。现在让你作为编号为1的恶魔,你是恶魔老大,请问聪明的你要怎么样才能让自己在不被杀死的情况下获得最多的金币呢。

2302_81153890的博客 1091

ZynqMP多核实战:如何让A53-0跑Linux,其他核裸机处理大数据(附完整配置流程)

本文详细解析了Xilinx ZynqMP多核异构计算实战,重点介绍如何配置A53-0运行Linux系统,同时让其他A53和R5核心以裸机方式处理大数据任务。内容涵盖内存划分、核间通信、Linux定制配置等关键技术,提供完整的配置流程和性能优化方案,助力开发者实现高效的多核协同开发。

weixin_30555125的博客 478

RTL优化与PPA分析:数字电路设计的关键技术

在数字集成电路设计中,RTL(寄存器传输级)优化是提升芯片性能、降低功耗和减小面积的核心技术。通过PPA(Power-Performance-Area)指标的平衡,工程师可以在不同时序约束下实现设计的最优化。本文基于Synopsys Design Compiler和开源工具Yosys的实验数据,展示了RTL优化在算术单元和控制逻辑中的显著效果,特别是在乘法器和除法器等复杂运算模块中。文章还探讨了AI辅助工具在RTL优化中的应用潜力,为数字电路设计提供了实用的技术参考和工程实践建议。

weixin_42186387的博客 619

海盗分金c语言算法,[经典算法]海盗分金问题sql求解(贪心算法)

问题:经济学上有个“海盗分金”模型:是说5个海盗抢得100枚金币,他们按抽签的顺序依次提方案:首先由1号提出分配方案,然后5人表决,超过半数同意方案才被通过,否则他将被扔入大海喂鲨鱼,依此类推,假设海盗是足够聪明的先利己再伤人,最后方案是怎样的?网上百度来的的代码:with a as(select 101 - rownum n from dual connect by rownum <10...

weixin_39902870的博客 659

当AI学会自我验证:Chain-of-Verification如何杜绝错误决策?

2025年,大模型"幻觉"问题已成为企业落地AI的最大障碍之一——金融风控中1.2%的误判率可能导致千万级损失,医疗诊断中3%的错误可能危及生命,法律文书中5%的事实偏差可能引发合规风险。MetaAI与Google联合提出的**Chain-of-Verification(CoVe,验证链)**技术,让AI具备"自我审视"能力,通过结构化验证流程将幻觉率降低68%+,在复杂决策场景准确率提升至95%+。本文系统拆解CoVe的技术原理、实施路径与行业实战,为企业提供AI决策可靠性保障的完整方案。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1080

[海盗分金] HDU 1538 A Puzzle for Pirates

久闻大名的海盗分金问题 详见HDU 1538 A Puzzle for Pirates(经典的海盗分金推理)#include<cstdio> #include<cstdlib> #include<algorithm> #define read(x) scanf("%d",&(x)) using namespace std;int fac[]={1,2,4,8,16,32,64,128,256,51

雯舞 489

PCL 点云拟合 最小二乘法拟合平面

在点云处理领域,最小二乘法(Least Squares)拟合是一种常用的数学方法,用于估计数据点的最佳拟合曲线或平面。平面拟合广泛应用于点云数据处理中的地面检测、物体表面分析等任务。 本文将介绍如何使用PCL库实现基于最小二乘法的平面拟合算法,通过拟合点云数据中的平面,来提取出数据的平面部分。

纵马踏花向自由 1026

Claude Code 常见安装失败问题与解决办法

摘要: Claude Code安装失败通常与环境、网络和权限问题有关,而非软件本身。主要误区包括:命令未识别(需检查PATH和终端重启)、网络连接失败(终端代理配置)、权限不足(系统安全限制)及账号认证问题。首次使用应避免复杂任务,建议从基础功能测试开始。快速自检可按终端重启→命令识别→网络→代理→权限→账号状态的顺序排查。理顺终端、网络和权限后,Claude Code运行将更稳定。 (150字)

sg_knight的专栏 6692

【通俗理解】海盗分金模型在现实生活中的类比就像一群合作伙伴分配利润,每个人都需要提出自己的分配方案,并通过协商和妥协来达成共识。

海盗分金模型 #博弈论 #策略分配 #动态博弈 #预测对手行动 #分数阶推广。

神经美学_茂森的博客 1352

C#操作MySQL从入门到精通(3)——新建数据库、新建表

我们要首先新建一个数据库,并且在数据库中新建一系列的表来管理数据库。

qq_34059233的博客 949

HDU 1538 A Puzzle for Pirates(经典好题,海盗分金问题)

A Puzzle for Pirate   HDU - 1538   A bunch of pirates have gotten their hands on a hoard of gold pieces and wish to divide the loot. They are democratic pirates in their own way, and it is their

Eiffel的博客 813

GEE必须会教程——一文教会你研究区域分块计算与合并

一整块算不是挺好的吗?emmmm,用过的人都知道,GEE好比幼年期的“紫妍”,要用“丹药”来养的,除非你是萧炎小友,到哪都有人给爆金币。我们今天想做的是计算2020年夏季西藏自治区的植被覆盖度(FVC),FVC的估算需要使用归一化植被指数(NDVI数据),这里我们用到的产品是MODIS的相关数据产品,该产品的分辨率是25 0m。下载好的结果毕竟是一块一块的,怎么对下载好的结果进行拼接,变成一张大图呢,别急,接下来,我们上科研小霸王——R语言。此处,我们通过省份数据,按照属性筛选,得到西藏自治区的行政边界。

Promising_GEO的博客 2510

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

hdu1538 A Puzzle for Pirates---海盗分金---博弈

A Puzzle for Pirates Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 141    Accepted Submission(s): 32 Problem Description A bunch of p

Shirley 2572

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

HDU 1538 A Puzzle for Pirates 海盗分金问题

题目大意: 就是现在n个海盗分配m枚金币, 依次编号为P1~Pn 然后海盗按照Pn->P(n - 1)->...->P2->P1的顺序提出分配方案, 然后或者的海盗投票表示是否赞成这个方案, 提出方案的海盗也会参与投票, 如果有一半或者以上的海盗赞成, 那么这个方案就通过, 按照这个方案分配金币, 否则这个海盗会被扔进海里喂鲨鱼, 各个海盗都决定聪明并且想使得自己的利益最大化, 当然这里各个海

Gatevin的专栏 913

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

hdu1538博弈论-海盗分金-博弈入门

0)觉得博弈游戏蛮有意思的,这算是第一个题把。 1)AC代码。 思路,对于每一个海盗来说,优先性由高到低依次为,保命,得金,杀人。所以可能为了保命、得金、杀更多人而支持或反对决策者。第一种情况时,金子足够,第二种是金子不够、决策者自己不要金子去贿赂别人而保住命且没有人会死,第三种情况是金子不够、决策者不要金子去贿赂别人但依然会死,支持他的人(不支持自己也是必死)也可能会死。 #include

他的博客 1415

hdu_oj1538A Puzzle for Pirates(海盗分金)

这道题目确实很难,特判的情况很多,参考了大神的题解才AC掉http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents by---cxlove 题目:这是一个经典问题,有n个海盗,分m块金子,其中他们会按一定的顺序提出自己的分配方案,如果50%以上的人赞成,则方案通过,开始分金子,如果不通过,则把提出方案的扔到海里,下一个人继续。 首先我们讲一下海盗分金决策的三个标准:保命,拿更多的金子,杀人,优先级是递减的。 同时分为两个状态...

_C9的博客 370

【博弈论】关于三姬分金(五海盗分赃)的博弈论问题分析

在看《天行九歌》的时候,看到了这个问题,之前在刷OI竞赛题的时候也刷到过一个,今天打算理一下关于这个问题的思路。 首先三姬分金和五海盗分赃其实都是一类问题“纳什均衡”,最初来源于经济学,在分析之前要先明白一些关于博弈论的知识: 局中人同时做决策的博弈,叫“静态博弈”。 如果决策有先后,后面的人,可以根据前面人的决策,决定和调整自己的决策,就叫“动态博弈”。 先决策的称之为:先手优势; 最后决...

Virtualman的专栏 1107

HDU 1538 A Puzzle for Pirates (海盗分金问题)

A Puzzle for Pirates Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 508Accepted Submission(s): 167 Problem Description A bunch of p...

169

HDU 1538 A Puzzle for Pirates 经典海盗分金币

题目:这是一个经典问题,有n个海盗,分m块金子,其中他们会按一定的顺序提出自己的分配方案,如果50%以上的人赞成,则方案通过,开始分金子,如果不通过,则把提出方案的扔到海里,下一个人继续。 首先我们讲一下海盗分金决策的三个标准:保命,拿更多的金子,杀人,优先级是递减的。 同时分为两个状态稳定状态和不稳定状态:如果当n和m的组合使得最先决策的人(编号为n)不会被丢下海, 即游

u013087645的专栏 1526

HDU - 1538 A Puzzle for Pirates 海盗分金

题目:有n个海盗,分m块金子,其中他们会按一定的顺序提出自己的分配方案,如果50%以上的人赞成,则方案通过,开始分金子,如果不通过,则把提出方案的扔到海里,下一个人继续。从第n个人开始决策,问第p个人能分多少金子,或是被扔到海里 思路: 参考http://blog.youkuaiyun.com/acm_cxlove/article/details/7853916  的博客做出来的,写的很详细 代码:

ACVevtor的博客 521

HDU 1538 A Puzzle for Pirates(海盗分金问题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1538 题意:有n个海盗,分m块金子,从第n个海盗开始,依次提出自己的分配方案,如果50%以上的人赞成,则方案通过,开始分金子,如果不通过,则把提出方案的扔到海里,下一个人继续。问编号为p的人最多分得多少金子? 思路:以下是cxlove的思路:如果只有两个人的话那么2号开始提出方案,这时候2号知道不...

weixin_33869377的博客 235

HDU 1538 海盗分金

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LoveLive; c

LEGION的专栏 714
上一篇: K倍动态减法(hdu 2486)
下一篇: 天梯赛总结
acmer_zp
博客等级 码龄11年 18粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值