Play a game (博弈论)

北航OJ-2014级第1次算法上机题解 北航2014级第一次算法上机题解 考查知识点:递归,排序,多项式求和技巧,以及数论、博弈论方面的一些知识。 评价:总体来说难度不大。比较困难的是C题和E题,算法都很精巧,是非常值得一做的好题。 阅读详情

Play a game


New Year is Coming!
ailyanlu is very happy today! and he is playing a chessboard game with 8600.
The size of the chessboard is n*n. A stone is placed in a corner square. They play alternatively with 8600 having the first move. Each time, player is allowed to move the stone to an unvisited neighbor square horizontally or vertically. The one who can't make a move will lose the game. If both play perfectly, who will win the game?

Input
The input is a sequence of positive integers each in a separate line.
The integers are between 1 and 10000, inclusive,(means 1 <= n <= 10000) indicating the size of the chessboard. The end of the input is indicated by a zero.
Output
Output the winner ("8600" or "ailyanlu") for each input line except the last zero.
No other characters should be inserted in the output.
Sample Input
2
0
Sample Output
8600
结论: n为偶数时,除去开局时棋子自己占的一格,余下n*n-1格,为奇数,先手胜。

   同理,n为奇数时,后手胜。

证明:

首先我的证明基于一个事实:1个奇数总能分成1个奇数和1个偶数之和;1个偶数只能分成2个奇数或者2个偶数。

 

  先来看看n=4时的情况:

  不妨设最右下角的位置为开局时棋子所在的位置。

  那么如图1,灰色的部分为先手可以走的格子,白色的部分为后手可以走的格子。

  (PS:就像国际象棋中的黑格象只会走到黑格中,白格象只会走到白格中。

      那么本题为什么是这样?是因为规则规定每次只能向外走一步而且只能上下左右走。

      所以一旦起点定下来,第一步是先手走,走到灰色格子,以后奇数的步数都是先手。

      所以离起点曼哈顿距离是奇数的都是先手走的。)

 

  

    图1

 

我们来看一个走的实例:

  

    图2

 

图2是一个先手赢的结局,通过这个例子可以发现如果这根时间线最后的终点是灰色就是先手胜(废话!先手下完,然后后手不能下了游戏就结束了,这不就是题目的要求么!)。

 

那么由于一开始走的时候就是先手,所以时间线的起点是灰色(如图3)。

  图3(红色为时间线)( 名字好像有点中二啊……)

 

如果要出现N(后手输)的结果,时间线最后也要是以灰色结尾。

 

这说明什么?

要知道这是一个灰色白色交替的时间线!

所以这就意味着时间线的长度是奇数(以第一个灰色为起点,连接了多少个点长度就是多少,图2的长度为15)!

 

由于起点一定是灰色,所以当n*n-1(n为偶数时)为奇数的时候,事实上是最长的那个时间线为奇数——如果按这个时间线走一定是先手胜。

但是这样还是没有说为什么一定会赢啊!

于是我们的前提可以派上用场了,1个奇数总能分成1个奇数和1个偶数之和。

 

对方才不会那么蠢,走我们安排的最长路线,但是“1个奇数总能分成1个奇数和1个偶数之和”也就是说,把这条路线长度分割,一定能找到比这条路线短的另一个奇数路线,因为我们是先手,所以我们控制走分出来的奇数的路,而不是引向偶数的路。

 

由于n是偶数,我们又是先手,每次都是先手面临时间线是奇数的情况,所以一定能赢。

而如果n是奇数,那么最长路是偶数,我们走后就变成以白格为首的奇数长度了,然后每次都是后手面临时间线是奇数的情况,所以先手就输了。

原证明博客网址

code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main(){
    int n;
    while(~scanf("%d",&n)&&n){
        if(n&1)
            printf("ailyanlu\n");
        else
            printf("8600\n");
    }
    return 0;
}



Proteus+汇编+8086电子时钟实战:从框架搭建到中断驱动的核心实现 本文详细介绍了使用Proteus仿真软件和8086汇编语言实现电子时钟的完整过程。从程序框架搭建、内存分段模型理解,到核心的8259中断控制器配置与编程,再到中断服务程序编写和数码管动态扫描显示驱动,系统阐述了底层软硬件协同开发的核心原理与实战步骤。该项目是深入理解计算机中断机制和汇编语言编程的绝佳实践。 阅读详情

相关推荐

高斯泼溅(Gaussian Splatting):3D建模的颠覆性革命

高斯泼溅(Gaussian Splatting):3D建模的颠覆性革命

yingtu666的博客 5149

ACM-博弈之Play a game——hdu1564

ACM 博弈 Play a game hdu1564 多种解题方法

继续激情,继续奋斗。 2263

TensorFlow实战:5步搞定因果推断模型TARNet(附完整代码)

本文提供了一份基于TensorFlow的TARNet因果推断模型实战指南。通过五个清晰步骤,从数据预处理、模型构建到训练评估,详细讲解了如何利用深度模型解决营销评估、疗效分析等场景中的因果效应估计问题,并附有完整代码解决样本不平衡等工程挑战。

python9snake的博客 415

hdu1564——Play a game(找规律博弈)

Problem Description New Year is Coming! ailyanlu is very happy today! and he is playing a chessboard game with 8600. The size of the chessboard is n*n. A stone is placed in a corner square. They p

Beyond the Sora 1309

《计算机网络》复试问答题总结

DNS 是一个联机分布式数据库系统,负责主机名和 IP 地址之间的转换,需要进行域名查询的机器主动发起域名解析请求,域名服务器则随时准备做出响应。域名服务器的数据库中存放着它所管辖范围的主机名和 IP 地址之间的映射表,域名服务器之间又可以相互联络和协作,以便分布在 Internet 各个域名服务器数据库中的域名都能被有效地搜索,从而实现主机名与 IP 地址的映射。为了提高解析效率,使用了域名缓存技术。在服务器、主机中设置一个专用的内存缓冲区。服务器用来存放近期解析过的域名及其对应的 IP 地址的映射。

weixin_45971154的博客 2027

新手别怕!用‘东北天’和‘右前上’坐标系,5分钟搞懂惯性导航姿态矩阵(含Python验证代码)

本文通过‘东北天(ENU)’和‘右前上(RFU)’坐标系,详细解析惯性导航中的姿态矩阵概念。包含Python代码验证,帮助新手快速理解坐标变换、欧拉角及旋转矩阵的构建与应用,特别强调有限转动不可交换性与无限转动次序无关的区别。

weixin_29062255的博客 331

Play a game(博弈)

题目传送门 Play a game 思路 大佬解法 AC Code #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<math.h> using namespace std; #define endl '\n' #define IN

Kuricip的博客 978

VUE3如何使得大屏自适应的几种方法?

16:9。

weixin_42711805的博客 1万+

博弈——Play a game

New Year is Coming!  ailyanlu is very happy today! and he is playing a chessboard game with 8600.  The size of the chessboard is n*n. A stone is placed in a corner square. They play alternatively wi

LSC_333的博客 594

Windows下用Docker部署RagFlow的5个常见错误及解决方法(附详细日志分析)

本文针对Windows系统下使用Docker部署RagFlow的常见难题,提供了详细的避坑指南。文章深度剖析了WSL2配置、端口冲突、文件权限、资源限制及网络通信这五个典型错误场景,并结合具体日志分析,给出了经过验证的解决方案,帮助开发者高效完成部署。

weixin_29233857的博客 178

光模块基础知识【快速入门】02

光模块是用于交换机与设备之间传输的载体,是光纤通信系统中的核心器件。主要作用是发射端将设备的电信号转换成光信号。 光纤通道光模块和以太网光模块 光纤通道光模块 光纤通道(FC, Fiber Channel)是一种高速网络数据传输协议。光纤通道协议可以有序无损地传输原始数据,它主要用于在数据中心、电脑服务器、交换机与存储网络中进行数据传输。 FC光模块遵循FC协议,充当着光纤通道系统之间的接口,也是光纤存储网络设备间的接口。它们主要用于数据中心的光纤通道存储网络链接中。 FC光模块具有小型化和低.

Jin Hanquan的博客 3万+

Play a game(博弈)(巴什博弈)

Problem Description  New Year is Coming!  ailyanlu is very happy today! and he is playing a chessboard game with 8600.  The size of the chessboard is n*n. A stone is placed in a corner square. They pl...

这可是一个难过的暑假哇,别白过 537

完整IC设计流程解析&Makefile学习

本文介绍了decorder38项目的文件结构、自动化综合流程和Makefile使用方法。项目包含RTL到GDSII全流程文件,重点关注syn目录中的综合脚本。通过make dc命令运行综合流程,生成网表、约束和时序文件。关键报告如qor.rpt、area.rpt和min_vio.rpt用于分析综合质量、面积和时序。Makefile部分解释了其基本语法、IC设计中的典型结构,包括目标定义、命令执行和特殊声明,强调了其在自动化构建和依赖管理中的重要性。

m0_63352623的博客 855

HUD 1564 Play a game【博弈论】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1564 博弈论总是别出心裁的。。想清楚了程序仍然短到哭。 这题是分奇偶。 如果格子数为偶数,总可以将相邻两小格合并成一大格,先手先走一小格,后手会跨入另一个大格中,这时先手总有该大格的第二小格为落脚点。最后后手无路可走。 如果格子数为奇数,按以上的方案划分会单出一小格,显然会给先手带来麻烦,先手走过

lazycat233的博客 341

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

HDOJ 1564 Play a game【博弈论】

HDOJ 1564 Play a game【博弈论】 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1564 偶数的时候, 因为可以将格子分成很多和长度为2的子格, 所以先手总是能找到一个接收他落脚的位置 先手必胜 奇数的时候, 在先手走完一个格子之后的状态, 就可以将格子分成很多和长度为2的子格, 所以

... 266

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

hdu1564—Play a game(博弈论)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1564 Play a game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2841    Accepted Submiss

zhiyuanjiang的博客 393

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

(HDU-1564)Play a game(博弈论)

题目链接:Play a game - HDU 1564 - Virtual Judge (ppsucxtt.cn) 题目大意:给你一个n*n的方格,在四个角落的其中一个放一块石头,ailyanlu和8600两个人轮流操作,每次可以把石头水平或竖直移动一格,前提是这个方格之前未放过石头,最后谁不能移动谁就输了。 分析:我们对方格的边长分奇数和偶数进行分析: 当n是奇数时,以3为例,不妨假设石头在左下角 观察可得,当n为奇数时,整个方格除了石头的位置之外,都可以用1*2的小长方块覆盖 对于先手来.

AC__dream的博客 316

WHUT第九周训练整理

WHUT第九周(博弈论)训练整理

月巴虫丰博客 6689

C - Play a game-----博弈

题目描述 New Year is Coming! ailyanlu is very happy today! and he is playing a chessboard game with 8600. The size of the chessboard is n*n. A stone is placed in a corner square. They play alternatively w...

Leo_zehualuo的博客 365

Game Theory

Class 1 lesson 1:Do not play a strictly dominated strategy. lesson 2:Rational choice can lead to outcomes that “suck” lesson 3:You can not get what you want,till you know that what you want. lesso...

weixin_30483495的博客 125

USACO 2009 Open Silver 3.Cow Digit Game简单博弈论

Description Bessie is playing a number game against Farmer John, and she wants you to help her achieve victory. Game i starts with an integer N_i (1 <= N_i <= 1,000,000). Bessie goes first, and then

qq_35891865的博客 975

博弈论(男人八题):POJ 1740 A New Stone Game

A New Stone Game Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5694 Accepted: 3119 Description Alice and Bob decide to play a new stone game.At the beginni...

weixin_30908103的博客 88

C - Play a game

New Year is Coming! ailyanlu is very happy today! and he is playing a chessboard game with 8600. The size of the chessboard is n*n. A stone is placed in a corner square. They play alternatively with 8600 having the first move. Each time, player is allowed

Luoriliming的博客 6937

1564 Play a game

Play a game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1907    Accepted Submission(s): 1533 Problem Description New Year is Coming

WNNSCNS的专栏 643
上一篇: F(x) HDU - 4734 (数位dp)
下一篇: One-Dimensional Battle Ships CodeForces - 567D (二分做法+解释)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值