• COWCHECKS


    Cow cowchecks

    (cowcheck.pas/c/cpp)
    【 问题描述】
    一天, Bessie 决定向 FarmerJohn 挑战一个游戏“奶牛西洋棋”。 游戏在一个 M*N 的棋
    盘上进行, 最初棋盘上只有一个棋子, 所在方格的坐标记为(X,Y)。 左下角方格坐标为(0,0),
    右上角方格坐标为(M-1,N-1)。 两个游戏者轮流走棋, Bessie 总是先走。 每步可以选择以下三
    种走法之一:
    1)将棋子移到它现在所在位置同行左边的任意一个格子中。
    2)将棋子移到它现在所在位置同列下方的任意一个格子中。
    3)将棋子移到任意一个位于它现在所在位置下方 k 行, 左边 k 列的格子中( k 为正整数,
    且新位置必须在棋盘内)。
    第一个不能再走棋( 也就是棋子到达了(0,0)) 的游戏者为输家)。 规定 Bessie 先走, 双
    方均作出最佳决策, 找出最后的赢家是谁。( 解释: 轮到该玩家走时, 棋子已经在( 0,0) 点,
    那么他是输家)
    每局开始将给定一对新的 X,Y, 请你模拟 T 局游戏并求出每局的赢家。
    【 输入格式】
    第 1 行: 两个空格隔开的整数: M 和 N;
    第 2 行: 一个整数: T;
    第 3..T+2 行: 两个空格隔开的整数: X 和 Y;
    【 输出格式】
    第 1..T 行: 应包含”Farmer John”或”Bessie”中的一个, 即每局的赢家。
    【 输入样例】
    3 3
    1 1
    1
    【 输出样例】
    Bessie
    【 样例说明】FJ 和 Bessie 在一个 3*3 的棋盘上下一局棋,棋子最初在(1,1( ) 也就是棋盘中央)。
    【样例注释】 Bessie 最初只能将棋子移到(1,0)或(0,1)或(0,0)中的一个格子。 Bessie 可以立即
    将棋子移到(0,0)从而赢下此局。
    【 数据规模】
    对于 20%的数据: 1≤T≤200; 1≤M≤100; 1≤N≤100;
    对于 30%的数据: 1≤T≤500; 1≤M≤1,000; 1≤N≤1,000;
    对于 60%的数据: 1≤T≤1,000; 1≤M≤10,000; 1≤N≤10,000;
    对于 100%的数据: 1≤T≤1,000,000; 1≤M≤1,000,000; 1≤N≤1,000,000;


    此题是一道非常有趣的数学题。这里写图片描述

    图中的红块是Bessie的必输点,而剩下的是他的必赢点。(可以推出来)
    画图可知,Bessie的必输点有(1,2);(2,1);(3,5);(4,7);(5,3)等,而(1,2)(2,1)刚好是反过来的。
    从而我们可以推出一个式子:

    f[i]=i+x; f[f[i]]=i; x++;

    这样,这道题就很简单了。

  • 相关阅读:
    不用keytool,tomcat打开https
    sqlserver获取某一张表中的所有列中的最大长度
    不用keytool,tomcat打开https
    到底私钥和公钥哪个是用来加密 哪个是用来解密的
    空间支持php解压
    到底私钥和公钥哪个是用来加密 哪个是用来解密的
    sqlserver获取某一张表中的所有列中的最大长度
    数字签名(代码签名)流程
    功夫电影中非常经典(武术非常实用)
    数字签名(代码签名)流程
  • 原文地址:https://www.cnblogs.com/stevensonson/p/7612212.html
Copyright © 2020-2023  润新知