zoukankan      html  css  js  c++  java
  • HDU5754 Life Winner Bo(博弈)

    题目

    Source

    http://acm.hdu.edu.cn/showproblem.php?pid=5754

    Description

    Bo is a "Life Winner".He likes playing chessboard games with his girlfriend G.

    The size of the chessboard is N×M.The top left corner is numbered(1,1) and the lower right corner is numberd (N,M).

    For each game,Bo and G take turns moving a chesspiece(Bo first).At first,the chesspiece is located at (1,1).And the winner is the person who first moves the chesspiece to (N,M).At one point,if the chess can't be moved and it isn't located at (N,M),they end in a draw.

    In general,the chesspiece can only be moved right or down.Formally,suppose it is located at (x,y),it can be moved to the next point (x′,y′) only if x′≥x and y′≥y.Also it can't be moved to the outside of chessboard.

    Besides,There are four kinds of chess(They have movement rules respectively).

    1.king.

    2.rook(castle).

    3.knight.

    4.queen.

    (The movement rule is as same as the chess.)

    For each type of chess,you should find out that who will win the game if they both play in an optimal strategy.

    Print the winner's name("B" or "G") or "D" if nobody wins the game.

    Input

    In the first line,there is a number T as a case number.

    In the next T lines,there are three numbers type,N and M.

    "type" means the kind of the chess.

    T≤1000,2≤N,M≤1000,1≤type≤4

    Output

    For each question,print the answer.

    Sample Input

    4
    1 5 5
    2 5 5
    3 5 5
    4 5 5

    Sample Output

    G
    G
    D
    B

    分析

    题目大概说给一个n*m的棋盘,棋子一开始在(1,1),两人交替移动棋子,移动的时候只能向右下方向走,走到(n,m)者赢,如果不能移动那就平局。问当棋子是king、rook、knight和queen时先手是必胜还是败,或者平局。

    • king:上下左右斜都能走,但只能走一格
    • rook:能走上下左右,格子不限
    • knight:只能走日字型
    • queen:上下左右斜都能走且无限制

    这题其实很简单。原理就是:当前处于终点局面的人必败,因为他没办法走棋,这是必败态;如果一个局面能转移到必败态的局面,那么这个局面是必胜的;如果一个局面只能转移到必胜局面那这个局面是必败态。

    根据这个原理去记忆化搜索。另外,考虑一下平局的情况,如果能平局就不要输即可,而平局只有棋子是knight时才可能发生。

    比赛时,king是直接记忆化搜索预处理出来的,rook则是直接记忆化搜索找到规律的,knight也是直接记忆化搜索预处理出来的,queen直接把1000多个必败态打表出来的。。

    值得一提的是官方题解中queen可以通过前缀和使得记忆化搜索中的转移达到O(1) ,这样就不怕超时了,而事实上queen的走法其实是一个经典的威佐夫博奕

    代码

    代码就不贴了= =。。

  • 相关阅读:
    Matlab2018 b 下载和安装激活说明
    亿图思维导图软件 Edraw MindMaster Pro 8.0.102 中文直装版全功能专业版
    中华人民共和国民法典全文及下载
    qbxt DAY3 T4
    洛谷P1972 [SDOI2009]HH的项链——题解
    洛谷P2824 [HEOI2016/TJOI2016]排序——题解
    洛谷P1966 火柴排队——题解
    逆序对小记(~dtk)
    0/1分数规划 小记
    洛谷P3199 [HNOI2009]最小圈——题解
  • 原文地址:https://www.cnblogs.com/WABoss/p/5709187.html
Copyright © 2011-2022 走看看