hdu 1907 && hdu 2509(Nim博弈)

数据分析笔试题 数据分析笔试题 网易数据分析 1. 通常可以通过关联规则挖掘来发现啤酒和尿布的关系, 那么如果对于一条规则A →B, 如果同时购买A和B的顾客比例是4/7, 而购买A的顾客当中也购买了B的顾客比例是1/2, 而购买B的顾客当中也购买了A的顾客比例是1/3,则以下对于规则A →B的支持度(support)和置信度(confidence)分别是多少? 知识点 关联规则 支持度 置信度 笔记 关联规则:... 阅读详情

其实我都是一直叫它(尼美博弈)
模型:
给你N堆,每堆数目是确定的(输入),每次从一堆取一个,多者不限,最多取完一堆。有两人AB,A先手,规定最后一个取完者赢(输)。问先后手哪个赢(输)。(假定两个人智商不掉线,而且聪明的足够想到最优策略)

模型解决:
先从特殊情况入手
(1)假设游戏一开始只有一堆有硬币,A便可以通过拿走所有硬币获胜
(2)假设有两堆有硬币,分别为n1,n2, A是否获胜不在于两堆硬币的多少,而取决于n1,n2是否相等
若n1==n2,B便可以模仿A来取物品获胜
若n1!=n2,设(n2>n1)A可以先从大堆中取走n2-n1个物品,促成n1==n2,之后A便可以模仿B来取物品获胜。
上述2堆NIM求解的思想,即使得留下两堆相等的方法,便可以推广到n堆上。

我们把以上这种情况称为平衡态。
那么,当某人面临平衡态(奇异局势)之后,那么他就是必WA。
那么只需要看看怎么来判断平衡态。

我们知道,每个堆可以分成以2为底数,指数不一定连续的各个数之和(二进制)的子堆。通过子堆,我们就可以来判断是否处于平衡态(一定可以,因为可以分解成子游戏)。

那么,现在考虑各大堆大小分别为N1,N2,……Nk的一般的Nim取子游戏。将每一个数Ni表示为其二进制数(数的位数相等,不等时在前面补0):
N1 = as…a1a0
N2 = bs…b1b0
……
Nk = ms…m1m0

那么平衡态就可以等价表示为:
as + bs + … + ms 是偶数
……
a1 + b1 + … + m1 是偶数
a0 + b0 + … + m0是偶数
一个平衡的取物品游戏是其中所有的位都是平衡的游戏,而非平衡的取物品游戏则是至少存在一个非平衡位的游戏。

扯得有点远,很多时候我们只需要知道怎么用,或者怎么实现就好。
这时候我们可以用^——异或(按位相同为0,不同为1)。
根据上边的结论,我们可以得出:

形如(a,b,c)的非奇异局势,假设 a < b< c,(注意,要维护递增序列)我们只要将 c 变为 a^b,即可,因为有如下的运算结果: a^b^(a^b)=(a^a)^(b^b)=0^0=0。要将c 变为a^b,只要从 c中减去 c-a^b即可。

比如,例(14,21,39),14^21=27,39-27=12,所以从39中拿走12个物体即可达到奇异局势(14,21,27)。

以上情况可以推广到N维。

题目本体:
这两道题基本都一样,出了输出格式。
都是尼姆博弈的变形。就是从一个奇异局势转为非奇异局势。逆向思维即可。

细节:
主体已经搞定了,但是不可能这么简单,不然就直接套模板就好了,hdu不会这么水,出三四道一样的模板题,没意义。
这里由于逆反了,所以我们还得考虑孤单堆的问题。特殊处理就好。

代码:
hdu 1907

#include<iostream>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        int ans = 0;
        cin>>n;
        bool flag = false;
        for(int i = 0; i<n; i++)
        {
            int a;
            cin>>a;
            if(a>1)
                flag = true;
            ans^=a;
        }
        if(flag)
        {
            if(ans)
                cout<<"John"<<endl;
            else
                cout<<"Brother"<<endl;
        }
        else
        {
            if(n%2)
            {
                cout<<"Brother"<<endl;
            }
            else
            {
                cout<<"John"<<endl;
            }
        }
    }
}

hdu 2509

#include<iostream>
using namespace std;
int main()
{
    int t;
    while(cin>>t)
    {
        int ans = 0;
        bool flag = false;
        for(int i = 0; i<t; i++)
        {
            int a;
            cin>>a;
            if(a>1)
                flag = true;
            ans^=a;
        }
        if(flag)
        {
            if(ans)
                cout<<"Yes"<<endl;
            else
                cout<<"No"<<endl;
        }
        else
        {
            if(t%2)
            {
                cout<<"No"<<endl;
            }
            else
            {
                cout<<"Yes"<<endl;
            }
        }
    }
}

PS: that’s all啦。。今天要写高数作业。。。没空撸多少题了。。。

Nim博弈两题 一、Nim博弈简介1、游戏规则设有k堆物品,(k>=1)各堆分别含有n1,n2,n3,……….nk件物品,游戏过程为: (1)两个游戏者交替进行游戏; (2)当轮到每个游戏者取子时,选择其中的一堆,并从所选的堆中取走至少一件物品(可以取走该堆中所有物品); (3)直到所有堆为空。2、获胜条件在Nim博弈中一般有两种情形,分别为: (1)最后取子的人获胜 (2)最后取子的人失败3、解题方法( 阅读详情

相关推荐

基于微信小程序的智能门禁管理系统的设计与实现(文章+源码)

基于微信小程序门禁管理小程序,该系统支持用户注册登录、查阅新闻动态、提交开门申请和发布留言等功能,同时管理员可以进行用户管理、新闻信息管理、门禁审批管理和留言管理等操作。该系统将采用IDEA开发工具、SSM框架和MYSQL数据库等相关技术,实现用户登录注册、个人信息管理、门禁申请提交、管理员审核等功能。该系统的实现,可以有效提高门禁管理的效率和便利性,同时也具有较强的可扩展性和可维护性。本研究对于智能门禁管理系统的设计和实现具有一定的参考价值。

u011779145的博客 1399

博弈论 (Nim 博弈)—— HDU 1907 && HDU 2509

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1907 分析: 这是一道非常经典的Nim博弈,我们需要特殊判断一下每一堆石子都为1的情况,然后对于其它情况,只需要将每一堆石子的数量异或在一起,最终为1就是先手先拿完,为0就是后手先拿完。 AC代码: #include<iostream> const int MAX=5000;using names

FeBr2的博客 554

Material Studio中分子动力学模拟得到密度density和溶解度参数

使用sketh工具画出全原子分子,以异辛烷为例子。

handsome213的博客 7320

HDU1907 && HDU2509_Nim博弈变形

/* *题号:1907*State: 15MS 268K 572 B C++ *题目大意: * Nim博弈的变形,就是先取完者败。 *解题思路: * 如上题。 * //必输态 S0(考虑奇偶), T2 * //必胜态 S2, S1, T0 */ View Code 1 #include &...

weixin_30682415的博客 109

TSMC 65nm PDK衬底文件转换避坑记:从.itf到.itd,解决ADS导入乱码与金属层缺失

本文详细解析了TSMC 65nm PDK衬底文件从.itf到.itd转换过程中的常见问题及解决方案,包括ADS导入乱码与金属层缺失的修复方法。通过环境准备、文件定位、转换操作和问题诊断的完整流程,帮助工程师高效完成衬底文件转换,确保电磁仿真精度。

weixin_30855099的博客 301

I2C通信协议SCL与SDA引脚特性:核心要点总结

深入讲解I2C通信协议中SCL和SDA引脚的工作机制与电气特性,帮助理解i2c通信协议的稳定传输原理,掌握上拉电阻配置与信号时序控制要点。

weixin_42103128的博客 2740

Hdu 1907 && Hdu2509 (nim博弈的相反胜况)

一般的nim博弈都是最后取完者算输。而有些

无奈滴微笑 747

乐视三合一体感摄像头--基本信息及windows下部分开发

乐视三合一体感摄像头--基本信息及windows下部分开发Introduction基本信息Windows下使用安装驱动使用openNI使用imageJ调用RGB图像Q:参考资料 Introduction       乐视三合一体感摄像头是乐视对标kinect,做的一款3D体感摄像头;设计目的为用于电视机上体感使用的,包括其USB结构都是为了符合电视机直接操作的,同时是支持相应的游戏操作;但是自从乐视倒闭之后,价格从之前标价899降到了现在140+左

GRF-Sunomikp31 1万+

HDU 2509 Be the Winner && HDU 1907 John (Nim博弈变形)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1907 http://acm.hdu.edu.cn/showproblem.php?pid=2509 题意:都是给n堆石头,每次可以从任意一堆里取出任意数量的石头,最后一个取完的就输了。问能赢的是先手还是后手。 两题代码基本相同,把输入一改就可以了。 本题的证明可以参

Benjamin_Z的博客 537

[特殊字符] RK3588 平台上基于 Panfrost 的 Mesa 驱动编译全过程

摘要: 本文详细记录了在RK3588平台(Ubuntu 20.04 aarch64)上编译基于Panfrost的Mesa驱动的全过程。内容包括:1)系统依赖安装;2)libdrm编译;3)Mesa配置参数优化;4)LLVM 15与SPIRV工具链的安装方法;5)SPIRV-Tools版本问题的解决方案;6)最终编译命令及常见错误处理。关键点在于正确设置工具链路径(PKG_CONFIG_PATH)和版本匹配(LLVM 15对应SPIRV-LLVM-Translator v15.0.0),推荐将组件安装在/op

梁俊星的博客 941

虚拟化 之三 详解 ARM 平台 jailhouse 的移植适配、构建及使用(飞腾派)

本文将探索学习通过在飞腾官方提供的 Buildroot 构建系统移植适配 openEuler 内核以及 jailhouse 源码 Package 进而直接构建一个适用于飞腾派开发板的带有 jailhouse 的 openEuler 发行版。

技术干货 1004

hdu 1907 John,hdu 2509 Be the Winner anti-NIM

基础的NIM博弈,系统学习博弈的话推荐去看:http://blog.youkuaiyun.com/acm_cxlove/article/details/7854530  原帖里讲的很清晰。        这题是取到最后一个的为负,所以必胜态为S2,S1,T0,读取的时候求一下亦或并且统计一下富余堆的数量就可以了。 #include #include #include #include #inclu

Broken Wings 766

编程助手:CLAUDE.md 与 AGENTS.md 完全指南

AI编程助手配置文件指南 为解决AI编程助手在陌生项目中面临的运行、规范、架构等问题,本文提出两种配置文件: CLAUDE.md(根目录): 面向通用AI(如ClaudeCode) 包含项目命令、代码风格、架构说明等结构化信息 示例:启动命令:npm run dev,代码规范:TypeScript禁用any AGENTS.md(任意目录): 面向智能编码工具(如Cursor) 支持模块级配置(如微前端子应用) 示例:前端测试命令:npm test:web,API请求规范 与传统README.md的区别: 人

分享AI、区块链技术及应用,未来已来 1254

HDU2509 Be the Winner Nim博弈

题目链接:HDU2509 Be the Winner Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3246    Accepted Submission(s): 1814 Problem Descripti

teddywang 510

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...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

转_HDU_1907&2509 博弈(Nim博弈变形)

学了三种简单博弈(前一篇)之后,我又在这篇博文这学了HDU1907的解法下面说下我的理解,有些借鉴原博文。这题和下面的题有点相似,但是又不一样也就是说把最后取完的定为输家改成,最后取完的定为赢家。后面的这个要简单一点,下面是简单分析,先来看这个简单的首先我们用T表示当前状态的所有火柴数异或为0,否则极为S。1.S可以转化成T我们设一共有n堆火柴,每堆有k(i)根.那么S态中k(1)^k(...

weixin_30435261的博客 117

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HDU2509:Be the Winner(Nim)

Problem Description Let's consider m apples divided into n groups. Each group contains no more than 100 apples, arranged in a line. You can take any number of consecutive apples at one time. For exa

ACM!荣耀之路! 2767

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

博弈

博弈学习: 先看三个博弈,了解基本概论,记住公式。 明白必败点(P)和必胜点(N)的概论,我觉得用必败态和必胜态更合适一点。这里要注意理解一下。 然后是后继点和sg值,后继点(态)是从当前点(态)进过一步能够走到的状态。   sg值是定义为:大于等于0 且 不等于它所有后继点的sg 值的最小整数 sg值为0说明这是必败点,不为0说明这是必胜点。 一个很优雅的结论:(在NI...

133

组合游戏(Nim 、反Nim)

详解见:http://wenku.baidu.com/link?url=H7XaRgujsbyWo3lQS5G2kXzzTgs-vS3-RvW3mVLEpKAjUgC94vPrBfkCXi4zxiavztczFR4-rk7X8h-ATZ_Xn_-5P0vRyV3f6LdZEeb6-YW               http://www.doc88.com/p-15628486495.ht

M_GSir的博客 905

HDU 2509 Nim博弈之分堆

Nim

NeWnIx 760

HDU(2509) Be the Winner /HDU(1907) John (Nim 博弈)

/*       尼姆博奕(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。  这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种局势,首先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。第二  种奇异局势是(0,n,n),只要与对手拿走一样多的物品,最后都将导致(0,...

139

hdu 1907/2509 (Nim 游戏变种)

这两题都是 Nim 游戏的变种。设第i堆的石子数位 Ai, SUM = A1 xor A2 xor... xor An  。设 SUM 非零为 S 态, SUM = 0 为 T 态。 自己刚开始以为只要保持 SUM = 1 即可。但证明发现,当 SUM = 0 时,也即为 T

yongnuzhibu的专栏 1095

hdu1907 ,2509

题意:给你N堆石子最后取完的为输的 问你谁能赢。 思路:可以看出来这是nim游戏的变形,在我的博客中写过了nim游戏变形的解法,当为s0和t2态的时候为必输态s1,s2,t2为必赢态所以我们只需求出来充裕堆和孤单堆的个数就可以了下面看代码:#include #include int a[5000]; int main() { int sum1,sum2,ans,t,n; //s

授人以鱼不如授人以渔 644

HDU 2509 Be the Winner nim博弈

Be the Winner Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2177    Accepted Submission(s): 1180 Problem Description Let's consider m a

小人物的草稿本 1454

博弈习题汇总

找规律 or 打表 :HDU 1517 HDU 1525 HDU 1564 HDU 2147 HDU 2897 HDU 1851 HDU 4203 HDU 5794 POJ 1740 ZOJ 2686 51NOD 1534 51NOD 1714 51NOD 1831 UVA 1482 CodeForces 768HYSBZ 3609 HYSBZ 3722 HYSBZ 2463 SG函数:HDU 1...

STOP 4003

HDU_1907&2509 博弈(Nim博弈变形)

JohnTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 4184 Accepted Submission(s): 2386Problem Description Little John is playing very funny

superxtong的博客 287
上一篇: hdu 2516 取石子游戏(FIB博弈)
下一篇: fzu 2086 餐厅点餐 (暴力搜索)
LTSC
博客等级 码龄11年 0粉丝 13原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值