zoukankan      html  css  js  c++  java
  • TYOI 1015 Game:博弈 结论【步数之和的奇偶性】

    题意:

      明明和亮亮在玩一个游戏。

      桌面上一行有n个格子,一些格子中放着棋子。

      明明和亮亮轮流选择如下方式中的一种移动棋子(图示中o表示棋子,*表示空着的格子):

      (1)当一枚棋子的右边是空格子的话,可以将这枚棋子像右移动一格。

        **o***         ->           ***o**

      (2)当一枚棋子的右边连续两个都有棋子,并且这个棋子往右边数第3格没有棋子,那么可以将这个棋子可以跳过去那两个棋子

        **ooo*        ->           ***oo*

      当任何一枚棋子到达最右边的格子时,这枚棋子自动消失。

      当一方不能移动时,这方输。

      假设明明和亮亮都采取最优策略,明明先走,谁将取胜?

    题解:

      走一步和走三步都是走奇数步。

      所以统计一下每个棋子到终点的步数之和tot。如果tot为奇数,则先手胜,否则后手胜。

    AC Code:

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string.h>
     4 
     5 using namespace std;
     6 
     7 int n,t;
     8 int tot;
     9 
    10 int main()
    11 {
    12     cin>>t;
    13     while(t--)
    14     {
    15         cin>>n;
    16         tot=0;
    17         char c;
    18         for(int i=n-1;i>=0;i--)
    19         {
    20             cin>>c;
    21             if(c=='o') tot+=i;
    22         }
    23         if(tot&1) cout<<"M"<<endl;
    24         else cout<<"L"<<endl;
    25     }
    26 }

    Game

    【题目描述】

    明明和亮亮在玩一个游戏。桌面上一行有n个格子,一些格子中放着棋子。明明和亮亮轮流选择如下方式中的一种移动棋子(图示中o表示棋子,*表示空着的格子):

    1)当一枚棋子的右边是空格子的话,可以将这枚棋子像右移动一格。

    **o***         ->           ***o**

    2)当一枚棋子的右边连续两个都有棋子,并且这个棋子往右边数第3格没有棋子,那么可以将这个棋子可以跳过去那两个棋子

    **ooo*        ->           ***oo*

    当任何一枚棋子到达最右边的格子时,这枚棋子自动消失。当一方不能移动时,这方输。假设明明和亮亮都采取最优策略,明明先走,谁将取胜?

  • 相关阅读:
    [转] How to import a large data set using XPO efficiently within a transaction
    [原] XAF 如何启用ListView Top N records 提升用户使用体验
    [XAF] How to improve the application's performance
    [XAF] Simplifying integration of custom controls bound to data from XAF application database
    解决Hyper-v Server更换网卡后上传速度变得非常慢的问题
    在SqlServer中通过SQL语句实现树状查询
    spring boot jpa定义返回类型问题
    linux-1
    HTML5——8form表格
    HTML5——7iframe框架
  • 原文地址:https://www.cnblogs.com/Leohh/p/7674066.html
Copyright © 2011-2022 走看看