1024 Calendar Game

来源:互联网 发布:samba端口号作用 编辑:程序博客网 时间:2024/06/05 11:18





题意就是给你一个年月日,你可以移动月和日,如果下个月没有当前的天数的时候你就不能移动月,当你刚好移动到11月4日你就赢了,如果你超过了十一月四日你就输了。


这个题就是找规律吧,我们可以倒着分析,从最后的那个点开始,然后慢慢往后退。

最终我们应该到达的是奇数点,即每次我们都需要保证自己走完后另一位所面对的是奇数局势,然后他只能走到偶数点,也就是一开始我们保证自己是偶数点开局就能赢。

但是这种说法是不全面的,对于(9,30)这个点,下一个点还是奇数点(10,1),或者你可以直接走到(10,30),这样就是偶数点(聪明人都会选择前一种做法,让下一个人面对的局势是必败局),同样对于(11,30),你可以直接走到(12,1),这两个点也是必胜的。

为什么不考虑其他只有30十天的30号,原因是只有(9,30)与(11,30)为奇数开局,并且可以为必胜局。


这样最终 的方案就出来了,只需要算出开局为偶数开局或者为(9,30),(11,30) 两个特殊的日子,就是必胜局,其他的为必败局。



#include<cstdio>int main(){    int y,m,d;    int T;    scanf("%d",&T);    while(T--)    {        scanf("%d%d%d",&y,&m,&d);        if((m+d)%2==0||(d==30&&(m==9||m==11)))            puts("YES");        else            puts("NO");    }    return 0;}




原创粉丝点击