• BZOJ 3609: [Heoi2014]人人尽说江南好


    3609: [Heoi2014]人人尽说江南好

    Time Limit: 10 Sec  Memory Limit: 256 MB
    Submit: 470  Solved: 336
    [Submit][Status][Discuss]

    Description

      小 Z 是一个不折不扣的 ZRP(Zealot Round-game Player,回合制游戏狂热玩家),

    最近他 想起了小时候在江南玩过的一个游戏。 
       在过去,人们是要边玩游戏边填词的,比如这首《菩萨蛮》就是当年韦庄在玩游戏时填 的:
        人 人 尽 说 江 南 好, 游 人 只 合 江 南 老。 
       然而我们今天不太关心人们填的词是什么,我们只关心小 Z 那时玩过的游戏。游戏
    的规 则是这样的,给定 N 堆石子,每堆石子一开始只有 1 个。小 Z 和他的小伙伴轮
    流操作, 小 Z 先行操作。操作可以将任意两堆石子合并成为一堆,当谁不再能操作的
    时候,谁就输掉了。 不过,当一堆石子堆的太高时可能发生危险,因此小 Z 和他的小
    伙伴规定,任何时刻任意一 堆石子的数量不能超过 m。即假如现在有两堆石子分别有
     a 个和 b 个,而且 a+b>m,那么这 两堆石子就不能合成一堆。 
           小 Z 和他的小伙伴都是很聪明的,所以他们总是会选择对自己最有
    利的策略。现在小 Z 想要知道,在这种情况下,对于一个给定的 n 和 m,到底是谁
    能够获得胜利呢? 

    Input

     本题包括多组数据  数据第一行为一个数 T,为数据组数 
     以下 T 行,每行两个正整数 n,m 
     

    Output

     输出 T 行,每行为 0 或 1,如果为 0 意为小 Z(即先手)会取得胜利,为 1 则为后

    手会 取得胜利。 
     

    Sample Input

    5
    7 3
    1 5
    4 3
    6 1
    2 2

    Sample Output

    1
    1
    1
    1
    0

    HINT

      100%的数据, n,m<=1000000000, T<=100 

    Source

    [Submit][Status][Discuss]

    博弈水题

     1 #include <cstdio>
     2 
     3 signed main(void)
     4 {
     5     int cas, n, m; 
     6     
     7     scanf("%d", &cas);
     8     
     9     while (cas--)
    10     {
    11         scanf("%d%d", &n, &m);
    12         
    13         int cnt = (n + m - 1) / m;
    14         
    15         if ((n - cnt) & 1)
    16             puts("0");
    17         else
    18             puts("1");
    19     }
    20 }

    @Author: YouSiki

  • 相关阅读:
    iPad 3g版完美实现打电话功能(phoneitipad破解)
    vb.NET基础总结
    PMP考试的过与只是
    Oracle基础学习5-- Oracle权限之”角色”
    linux内存操作----kernel 3.5.X copy_from_user()和copy_to_user()
    猜数字游戏
    pthread_t definition
    POJ 2057 The Lost House
    简单截图功能实现
    java实现罗马数字转十进制
  • 原文地址:https://www.cnblogs.com/yousiki/p/6440888.html
Copyright © 2020-2023  润新知