zoukankan      html  css  js  c++  java
  • CodeForces 493D Vasya and Chess 简单博弈

    Vasya and Chess
    Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

    Description

    Vasya decided to learn to play chess. Classic chess doesn't seem interesting to him, so he plays his own sort of chess.

    The queen is the piece that captures all squares on its vertical, horizontal and diagonal lines. If the cell is located on the same vertical, horizontal or diagonal line with queen, and the cell contains a piece of the enemy color, the queen is able to move to this square. After that the enemy's piece is removed from the board. The queen cannot move to a cell containing an enemy piece if there is some other piece between it and the queen.

    There is an n × n chessboard. We'll denote a cell on the intersection of the r-th row and c-th column as (r, c). The square (1, 1)contains the white queen and the square (1, n) contains the black queen. All other squares contain green pawns that don't belong to anyone.

    The players move in turns. The player that moves first plays for the white queen, his opponent plays for the black queen.

    On each move the player has to capture some piece with his queen (that is, move to a square that contains either a green pawn or the enemy queen). The player loses if either he cannot capture any piece during his move or the opponent took his queen during the previous move.

    Help Vasya determine who wins if both players play with an optimal strategy on the board n × n.

    Input

    The input contains a single number n (2 ≤ n ≤ 109) — the size of the board.

    Output

    On the first line print the answer to problem — string "white" or string "black", depending on who wins if the both players play optimally.

    If the answer is "white", then you should also print two integers r and c representing the cell (r, c), where the first player should make his first move to win. If there are multiple such cells, print the one with the minimum r. If there are still multiple squares, print the one with the minimum c.

    Sample Input

    Input
    2
    Output
    white
    1 2
    Input
    3
    Output
    black

    Hint

    In the first sample test the white queen can capture the black queen at the first move, so the white player wins.

    In the second test from the statement if the white queen captures the green pawn located on the central vertical line, then it will be captured by the black queen during the next move. So the only move for the white player is to capture the green pawn located at (2, 1).

    Similarly, the black queen doesn't have any other options but to capture the green pawn located at (2, 3), otherwise if it goes to the middle vertical line, it will be captured by the white queen.

    During the next move the same thing happens — neither the white, nor the black queen has other options rather than to capture green pawns situated above them. Thus, the white queen ends up on square (3, 1), and the black queen ends up on square (3, 3).

    In this situation the white queen has to capture any of the green pawns located on the middle vertical line, after that it will be captured by the black queen. Thus, the player who plays for the black queen wins.

    题意:黑白皇后在棋盘上可以横着走竖着都对角线走 前提是走到的地方要有一个棋子给你吃  不能跨过一个棋子去吃另外一个棋子  

    棋盘上除了黑白皇后其他地方都铺满了中立单位 随便吃  白的先走 问谁会赢 白赢的话给出第一步怎么走

    第一次做博弈  因为是对称的所以很水  草稿上把n试到4的时候结论就差不多出来了 

    我的理解是white和black第一步都要往中间靠 然后谁先迫不得已往下走谁就输了  

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <iomanip>
    #include <math.h>
    #include <map>
    using namespace std;
    #define FIN     freopen("input.txt","r",stdin);
    #define FOUT    freopen("output.txt","w",stdout);
    #define INF     0x3f3f3f3f
    #define lson    l,m,rt<<1
    #define rson    m+1,r,rt<<1|1
    typedef long long LL;
    
    int main()
    {
        int n;
        cin>>n;
        if(n%2!=0)  printf("black
    ");
        else  printf("white
    1 2
    ");
        return 0;
    }
    

      

  • 相关阅读:
    hadoop集群安装
    struts2官方 中文教程 系列十四:主题Theme
    struts2官方 中文教程 系列十三:利用通配符选择方法
    struts2官方 中文教程 系列十二:控制标签
    struts2官方 中文教程 系列十一:使用XML进行表单验证
    struts2官方 中文教程 系列十:Form标签
    struts2官方 中文教程 系列九:Debugging Struts
    struts2官方 中文教程 系列八:异常处理
    struts2官方 中文教程 系列七:消息资源文件
    struts2官方 中文教程 系列六:表单验证
  • 原文地址:https://www.cnblogs.com/Hyouka/p/5763956.html
Copyright © 2011-2022 走看看