首页 > 其他 > 详细

bzoj3609【HEOI2014】人人尽说江南好

时间:2017-02-25 17:26:16      阅读:311      评论:0      收藏:0      [点我收藏+]

题意:http://www.lydsy.com/JudgeOnline/problem.php?id=3609

sol :博弈论

    通过打表找规律,发现答案是%m循环的,且当m为偶数时取反

    因为我太蒟蒻了QAQ,给不出证明

    我是这么想的:

      首先对于一组n,m,假如两个人都往一堆上放,满了以后再放下一堆,设赢的人为甲,输的人为乙

      那么甲一定会尽力维持这个局面,乙则会去破坏该局面,即乙会额外新开一堆

      那么甲会每次将乙新开的那堆往自己的一堆上放,最后形成若干个大小为m的堆以及两个和>m的堆

      所以答案%m循环,至于m为偶取反可以打表看出来QAQ

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,a,b,ans;
int main()
{
    int T;scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m); 
        a=(n-1)%m%2,b=(n-1)/m%2;
        ans=a^1; if(m%2==0) ans^=b;
        printf("%d\n",ans);
    }
    return 0;
}

bzoj3609【HEOI2014】人人尽说江南好

原文:http://www.cnblogs.com/xiaoxubi/p/6442151.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!