【HDU1079】Calendar Game(博弈论,博弈找规律)

/*




网上看来的想法,通过分析和找规律来确定必胜必败。


依据月份和日期和的奇偶性。


不论月份加一,还是日期加一,都改变了奇偶性。只有月末加一天可能不改变奇偶性。


1.31——2.1  偶--奇
2.28——3.1  偶--偶  (可以选择2.28--3.28偶--奇)
(2.29——3.1) 奇--偶
3.31——4.1  偶--奇
4.30——5.1  偶--偶(可以选择4.30--5.30偶--奇)
5.31——6.1  偶--奇()
6.30--7.1  偶--偶 (可以选择6.30--7.30偶--奇)
7.31--8.1  偶--奇
8.31--9.1  奇--偶
9.30--10.1  奇--奇(9.30--10.30奇--偶)
10.31--11.1  奇--偶
11.30--12.1  奇--奇
12.31--1.1   奇--偶


//综上
偶数必胜,奇数必败。
除了9.30,10.1.
所有的偶数(必胜态)都可以经过一步变换到对方的奇数(必败态)


如果偶数,一定不会变换到对方的偶数(必胜态)


作为先手,不会主动进入特殊日期,而后者不可能从奇数依旧到达特殊日期的奇数。


而除了9.30 11.30,奇数只能变换到对方的偶数(必胜态),


所以只要判断奇偶性和特殊日期即可。




*/

/*hdu 1079*/
/*2014.11.3*/
/*Ouc_Sky*/

#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    int year,month,day , t;
    scanf("%d",&t);
    while(t--)
    {
         scanf("%d%d%d",&year,&month,&day);
         if((month+day)%2==0 || month==9 && day==30 || month==11 && day==30)  printf("YES\n");
         else printf("NO\n");
    }
    return 0;
}

自己一开始写的普通的递推:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值