zoukankan      html  css  js  c++  java
  • P4101 [HEOI2014]人人尽说江南好

    题目描述

    小 Z 是一个不折不扣的 ZRP(Zealot Round-game Player,回合制游戏狂热玩家),最近他 想起了小时候在江南玩过的一个游戏。

    在过去,人们是要边玩游戏边填词的,比如这首《菩萨蛮》就是当年韦庄在玩游戏时填 的: 人 人 尽 说 江 南 好, 游 人 只 合 江 南 老。

    然而我们今天不太关心人们填的词是什么,我们只关心小 Z 那时玩过的游戏。游戏的规 则是这样的,给定 N 堆石子,每堆石子一开始只有 1 个。小 Z 和他的小伙伴轮流操作, 小 Z 先行操作。操作可以将任意两堆石子合并成为一堆,当谁不再能操作的时候,谁就输掉了。

    不过,当一堆石子堆的太高时可能发生危险,因此小 Z 和他的小伙伴规定,任何时刻任意一 堆石子的数量不能超过 m。即假如现在有两堆石子分别有 a 个和 b 个,而且 a+b>m,那么这 两堆石子就不能合成一堆。

    小 Z 和他的小伙伴都是很聪明的,所以他们总是会选择对自己最有利的策略。现在小 Z 想要知道,在这种情况下,对于一个给定的 n 和 m,到底是谁能够获得胜利呢?

    输入输出格式

    输入格式:

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

    输出格式:

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

    输入输出样例

    输入样例#1: 
    5
    7 3
    1 5
    4 3
    6 1
    2 2
    输出样例#1: 
    1
    1
    1
    1
    0

    说明

    对于 10%的数据, m>=n

    对于 20%的数据, n,m<=10

    对于 30%的数据, n,m<=50, 2*m>=n

    对于 50%的数据, n,m<=100

    对于 70%的数据, n,m<=1000000

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

    Solution:

      本题博弈论。

      首先,合并次数最多为$n-1$,当$nleq m$时答案直接由合并次数的奇偶判断,而当$n>m$时,最后只可能形成$frac{n}{m}$个满的$m$堆和一个不满$m$的堆,每个$m$数量的堆合并次数为$m-1$次,而$n\%m$数量的堆合并次数为$n\%m-1$(注意当$n\%m==0$时就不需要合并了,也就不用减$1$),总合并次数为$frac{n}{m}*(m-1)+n\%m-1+(n\%m==0)$,该式子可以将$n\%m$用$n-frac{n}{m}*m$代换,最后次数化简得$n-frac{n}{m}+(n\%m==0)-1$,那么答案就由最后合并次数的奇偶来判断即可。

    代码:

    /*Code by 520 -- 10.11*/
    #include<bits/stdc++.h>
    #define il inline
    #define ll long long
    #define RE register
    #define For(i,a,b) for(RE int (i)=(a);(i)<=(b);(i)++)
    #define Bor(i,a,b) for(RE int (i)=(b);(i)>=(a);(i)--)
    using namespace std;
    ll n,m;
    
    int main(){
        ios::sync_with_stdio(0);
        cin>>n;
        while(cin>>n>>m) {
            ll tp=n-n/m-1+(n%m==0);
            puts(tp&1?"0":"1");
        }
        return 0;
    }
    堆和一个不满
    [Duī hé yīgè bùmǎn]
    Heap and a dissatisfaction
  • 相关阅读:
    objectMediator
    vi
    string regex
    ar
    widget class in class
    Makefile 语法分析 第三部分
    在Makefile中的 ".PHONY "是做什么的?
    】openssl移植Android使用及其相关经验分享
    精品Android源码推荐,看了绝不后悔
    Makefile 语法分析 第三部分
  • 原文地址:https://www.cnblogs.com/five20/p/9852409.html
Copyright © 2011-2022 走看看