HDU1730->Nim博弈

原创 2016年08月29日 15:34:03

HDU1730->Nim博弈


题意:

游戏在一个n行m列(1 ≤ n ≤ 1000且2 ≤ m ≤ 100)的棋盘上进行,每行有一个黑子(黑方)和一个白子(白方)。执黑的一方先行,每次玩家可以移动己方的任何一枚棋子到同一行的任何一个空格上,当然这过程中不许越过该行的敌方棋子。双方轮流移动,直到某一方无法行动为止,移动最后一步的玩家获胜。
判断先手的胜负情况。

题解:

等效于nim博弈。
相当于n堆石子,每堆石子的数量等于每行黑白棋子间有多少个空格。如果全部都没有空格了,那么先走的必败,因为后走的可以贴着先走的棋子走,而对方一定在有限步之内穷途陌路,这时就相当于石子取完了。直观不同于nim的是,这里有可能通过反向移动,相当于增加石子,不过这也不会改变必胜必败态的。因为如果此时该走之人出于必胜态,那么就不必反向移动了,如果是必败态想通过增加石子改变必败态,那么另一方可以走相同的方向和步数来维持自己的必胜态,而耍赖一方的耍赖次数也是有限的。 到此模型就完全等价于nim游戏了。

代码:

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <cmath>
using namespace std ;
int main()
{
    int m , n;
    while(scanf("%d%d" , &n , &m)==2)
    {
        int ans = 0 ;
        for(int i = 0 ; i < n ; i ++)
        {
            int a , b ;
            scanf("%d%d" , &a , &b) ;
            ans ^= (abs(a - b) - 1) ;
        }
        if(ans) printf("I WIN!\n") ;
        else printf("BAD LUCK!\n") ;
    }
    return 0 ;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 1730 Northcott Game(Nim博弈变形)

Northcott GameTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T...

hdu 1730 Northcott Game (Nim博弈)

Northcott GameTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T...

hdu1730 Northcott Game 转换为距离NIM

Northcott Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

HDU 1848 Fibonacci again and again Nim博弈变形

Fibonacci again and again Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...
  • wr132
  • wr132
  • 2016年04月25日 16:26
  • 308

HDU 1536 S-Nim(SG博弈)

S-Nim Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su...
  • Yasola
  • Yasola
  • 2016年08月24日 15:39
  • 221

hdu 5011 nim博弈变形

Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Sub...

hdu1850 Being a Good Boy in Spring Festival(nim博弈)

Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/3...
  • d_x_d
  • d_x_d
  • 2016年08月05日 00:04
  • 633

HDU-1850-Being a Good Boy in Spring Festival【Nim博弈】

Being a Good Boy in Spring FestivalProblem Description 题目大意:Nim问题,有N堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少...

[ACM] hdu 1850 Being a Good Boy in Spring Festival(Nim博弈)

Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/3...

hdu 1847 Nim博弈

博弈问题巴士博弈HDU1846
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU1730->Nim博弈
举报原因:
原因补充:

(最多只允许输入30个字)