判断下一步能否到达必胜态,如果可以当前状态就是必败态,否则当前状态记为必胜态

 #include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
bool p[][][];
int month[] = { , , , , , , , , , , , , }; struct Date{
int y , m , d;
Date(int y= , int m= , int d=):y(y),m(m),d(d){}
}; bool run(int y)
{
return y% == || (y% == && y% != );
} bool ok(int y , int m , int d)
{
if(run(y)) month[]=;
bool flag;
if(d > month[m]) flag = false;
else flag = true;
month[] = ;
return flag;
} Date getLastDay(int y , int m , int d)
{
Date tmp;
tmp.y = y , tmp.m = m , tmp.d =d;
if(run(y)) month[]=;
if(d == ){
if(m == ){
tmp.y--;
tmp.d= , tmp.m =;
}else{
tmp.m--;
tmp.d = month[tmp.m];
}
}
else tmp.d--;
month[] = ;
return tmp;
} Date get_next_month(int y , int m , int d)
{
Date tmp;
tmp.y = y , tmp.m = m , tmp.d =d;
if(m == ) tmp.m= , tmp.y+=;
else tmp.m+=;
return tmp;
} void init()
{
memset(p , , sizeof(p));
p[][][] = true;
Date cur = Date( , , );
while(){
Date la = getLastDay(cur.y , cur.m , cur.d); Date next_month = get_next_month(la.y , la.m , la.d);
bool p1 = p[cur.y-][cur.m][cur.d];
bool p2 = false; if(ok(next_month.y , next_month.m , next_month.d))
p2 = p[next_month.y-][next_month.m][next_month.d];
if(p1 || p2) p[la.y-][la.m][la.d] = false;
else p[la.y-][la.m][la.d] = true; cur.y = la.y , cur.m = la.m , cur.d = la.d;
if(cur.y == && cur.m == && cur.d == ) break;
}
} int main()
{
// freopen("a.in" , "r" , stdin);
int T;
scanf("%d" , &T);
init(); while(T--)
{
int y , m ,d;
scanf("%d%d%d" , &y , &m , &d); if(p[y-][m][d]) puts("NO");
else puts("YES");
}
return ;
}

最新文章

  1. Struts2的经典入门
  2. C fopen
  3. Java-小练习简单银行程序
  4. ThinkPHP函数详解:F方法(快速缓存方法)
  5. Java 获取网络重定向文件的真实URL
  6. Python 3.4 链接mysql5.7 数据库使用方法
  7. Bash String Manipulation Examples – Length, Substring, Find and Replace--reference
  8. javascript 事件对象
  9. Linux 系统文件夹结构
  10. Python爬虫01——第一个小爬虫
  11. SpringBoot+Redis环境搭建
  12. HX711初步处理记录
  13. 用turtle画图
  14. [leetcode]38. Count and Say数数
  15. PAT A1122 Hamiltonian Cycle (25 分)——图遍历
  16. [ 转载 ] Handler详解
  17. MySQL数据切分的相关概念和原理详解
  18. flume 前世今生
  19. JVM 体系结构概述 (一)
  20. 【转】详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)

热门文章

  1. 题解报告:poj 2533 Longest Ordered Subsequence(最长上升子序列LIS)
  2. 题解报告:hdu 1576 A/B(exgcd、乘法逆元+整数快速幂)
  3. 利用autotools工具制作从源代码安装的软件 分类: linux 2014-06-02 23:27 340人阅读 评论(0) 收藏
  4. 官方XmlPullParser和网络解析xml示例及详述
  5. css超出部分显示省略号
  6. C# 控制台语音计算器
  7. AJPFX关于IO流的简单总结
  8. java 之冒泡排序
  9. Java快速读取大文件
  10. vue2.0 静态prop和动态prop