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

    [HEOI2014] 人人尽说江南好

    题目大意:一个博弈游戏,地上(n)堆石子,每堆石子有(1)个,每次可以合并任意两个石子堆(a,b),要求(a + b leq m),问先手赢还是后手赢

    Solution

    可以知道,最终的石子堆是m,m,m,m, n mod m这样的,并不一定是这样,比如(1,1,1,1,1),可以是合并为(3,2)(4,1),但总数都是(lceil frac{n}{m} ceil)堆,每次合并两个堆,所以总合并次数为(n-lceil frac{n}{m} ceil),若合并次数为奇数,则先手赢,若合并次数为偶数,则后手赢。

    Code

    // luogu-judger-enable-o2
    #include <iostream>
    #include <cstdio>
    #define sc(x) scanf("%d", &x)
    
    using namespace std;
    
    int main(){
        int T, n, m;
        sc(T); 
        while(T--){
            sc(n), sc(m);
            if((n - (n - 1) / m - 1) & 1)
                puts("0");
            else 
                puts("1"); 
        }
        return 0;
    } 
    
  • 相关阅读:
    54.Spiral Matrix
    53.Maximum Subarray
    基础数据类型包装类
    sqlacodegen逆向数据库
    第四章、常用模块
    第三章、函数编程
    第一章
    第一章 Python基础
    Centos7.0升级python 2.x到3.x
    time
  • 原文地址:https://www.cnblogs.com/LMSH7/p/9572880.html
Copyright © 2011-2022 走看看