HDU 2147 kiki's game(博弈)】的更多相关文章

题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=2147 Problem Description Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes the checkerboard game.The size of the chesserboard is n*m.First of all, a coin i…
kiki's game Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Submit Status Description Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes the checkerboard game.The size of the…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2147 题目大意:给你一个n*m的棋盘,初始位置为(1,m),两人轮流操作,每次只能向下,左,左下这三个方向移动,谁最后无法移动棋子就输掉比赛,问先手是否会获胜. 解题思路:简单题,P/N分析找规律,以(n,m)点为结束点推到起始点,如图: 发现每个田字格的状态都是一样的,因为(n,m)点一定时P态,所以可以得出规律:只有当(m%2==1&&n%2==1)时,先手才会输. 代码: #includ…
博弈的一些概念: 必败点(P点) : 前一个选手(Previous player)将取胜的位置称为必败点. 必胜点(N点) : 下一个选手(Next player)将取胜的位置称为必胜点. 必败(必胜)点属性 (1) 全部终结点是必败点(P点): (2) 从不论什么必胜点(N点)操作,至少有一种方法能够进入必败点(P点): (3)不管怎样操作, 从必败点(P点)都仅仅能进入必胜点(N点). pid=2147">hdu 2147 kiki's game 题意: 在一个m*n的棋盘内,从(1,…
HDU.2147 kiki's game (博弈论 PN分析) 题意分析 简单的PN分析 博弈论快速入门 代码总览 #include <bits/stdc++.h> using namespace std; int main() { int n,m; while(scanf("%d %d",&n,&m) != EOF){ if(n == 0 && m == 0) break; if(n%2 && m%2){ printf(&q…
kiki's game HDU - 2147 题意:一个n*m的表格,起始位置为右上角,目标位置为左下角,甲先开始走,走的规则是可以向左,向下或者向左下(对顶的)走一格.谁先走到目标位置谁就胜利.在甲乙都采用最佳策略的时候,先走者能否获胜. 这是一个5*5的PN图 从中可以看出,只要满足行或列中的某一个为偶数就可以先手必胜 #include<iostream> #include<cstdio> using namespace std; int main(){ int n,m; ){…
kiki's game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 40000/10000 K (Java/Others)Total Submission(s): 10763    Accepted Submission(s): 6526 Problem Description Recently kiki has nothing to do. While she is bored, an idea appears in his…
kiki's game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 40000/1000 K (Java/Others)Total Submission(s): 5094    Accepted Submission(s): 2985 Problem Description Recently kiki has nothing to do. While she is bored, an idea appears in his mi…
思路:以终点(n, m)作为P态,倒推各个坐标的状态,最终得到结论:行数或列数是偶数就能赢,否则输.        AC代码 #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <utility> #include <string> #include <iostream> #include <map&g…
题意:给定一个 n * m 的格子,从右上角(1, m) 开始每个玩家只能从向下,向左,或者向左下走,谁不能走,谁输. 析:自己做出来,看了网上的几个博客,好像都没说为什么是只有全奇的情况才会输,个人的理解如下,如果不对,欢迎指正. 首先,从(1, m)  走到 (n, 1) 这才是一个完整的,也就是如果论到谁开始移动的时候当时的位置是 (n, 1),那么它就输了,因为只能向下,向左,向左下,而这些方向都出界了.这样看不大好看,我们可以看成是从 (n, m) 走到 (1, 1),同理如果论到谁开…