题目描述

Adam和Eve玩一个游戏,他们先从1900.1.1到2001.11.4这个日期之间随意抽取一个日期出来。然后他们轮流对这个日期进行操作:

1 : 把日期的天数加1,例如1900.1.1变到1900.1.2

2 : 把月份加1,例如:1900.1.1变到1900.2.1

其中如果天数超过应有天数则日期变更到下个月的第1天。月份超过12则变到下一年的1月。而且进行操作二的时候,如果有这样的日期:1900.1.31,则变成了1900.2.31,这样的操作是非法的,我们不允许这样做。而且所有的操作均要考虑历法和闰年的规定。

谁先将日期变到2001.11.4谁就赢了。

每次游戏都是Adam先操作,问他有没有必胜策略?

输入输出格式

输入格式:
一个测试点。多组数据。

第一行为数据组数。

接下来一行X Y Z表示X年Y月Z日

输出格式:
输出“YES”or“NO”表示亚当是否有必胜策略。

输入输出样例

输入样例#1: 复制
3
2001 11 3
2001 11 2
2001 10 3
输出样例#1: 复制
YES
NO
NO
说明

建议先把所有情况都算出来^_^

解题思路

记忆化搜索+博弈论。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>using namespace std;int f[2005][15][35];
int month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
bool vis[2005][15][35];
int T;inline bool pd(int y,int m,int d){if(y<2001) return true;if(y==2001 && m<11) return true;if(y==2001 && m==11 && d<4) return true;return false;
} inline int dfs(int y,int m,int d){if((y%4!=0 || y==1900) && m==2 && d==29) return 1;if(d>month[m]) {m++;d=1;}if(m==13) y++,m=1;if(vis[y][m][d]) return f[y][m][d];vis[y][m][d]=1;if(month[m+1]>=d && pd(y,m+1,d))  f[y][m][d]=((dfs(y,m+1,d))^1);if(pd(y,m,d+1)) f[y][m][d]|=((dfs(y,m,d+1)^1));return f[y][m][d];
}int main(){f[2001][11][3]=f[2001][10][4]=1;dfs(1900,1,1);
//  for(register int i=1900;i<=2001;i++)
//      for(register int j=1;j<=12;j++)
//          for(register int k=1;k<=31;k++)
//              printf("f[%d][%d][%d]=%d\n",i,j,k,f[i][j][k]);scanf("%d",&T);int x,y,z;while(T--){scanf("%d%d%d",&x,&y,&z);puts(f[x][y][z]?"YES":"NO");}return 0;
}

转载于:https://www.cnblogs.com/sdfzsyq/p/9676896.html

LUOGU P1512 伊甸园日历游戏相关推荐

  1. P1512 伊甸园日历游戏

    题目 题目描述 Adam和Eve玩一个游戏,他们先从1900.1.1到2006.11.4这个日期之间随意抽取一个日期出来.然后他们轮流对这个日期进行操作: 1 : 把日期的天数加1,例如1900.1. ...

  2. [Luogu 1312] noip11 Mayan游戏

    [Luogu 1312] noip11 Mayan游戏 Problem: Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即 ...

  3. luogu P2584 [ZJOI2006]GameZ游戏排名系统 Splay

    luogu P2584 [ZJOI2006]GameZ游戏排名系统 Splay 实在不想调了QAQ... Code: #include <cstdio> #include <algo ...

  4. 【ybt高效进阶4-1-3】【luogu P5462】龙珠游戏 / X龙珠

    龙珠游戏 / X龙珠 题目链接:ybt高效进阶4-1-3 / luogu P5462 题目大意 有一个队列(里面的数互不相同),然后你每次可以取出相邻的两个数,按它们的前后顺序放到另一个队列中,最终所 ...

  5. luogu P3041 [USACO12JAN]视频游戏的连击Video Game Combos

    P3041 [USACO12JAN]视频游戏的连击Video Game Combos 题目大意: 给出n个字符串st[1-n],求一个长度为K的字符串,每匹配到st中的字符串就+1分,问最多能加几分 ...

  6. 【YBTOJ】【Luogu】取火柴游戏

    思路: 经典NIM游戏 c o d e code code #include<iostream> #include<cstdio>using namespace std;int ...

  7. luogu P1199 【三国游戏】

    首先很明显这是一道贪心题. 贪心方法很多dalao已经写出来了,找每个武将次大值最大的武将. 呢么我们定义一个数组\(f[N][2]\) , 其中\(f[i][0]\)用来储存第\(i\)个武将的次大 ...

  8. luogu P1834 速算游戏 题解

    2022-01-13 20:52:15 thumb_up 0 模拟大题 模拟赛没人的碰题,不简单 前言:为了表达,一下将类似于"(((3+5)+2)+7)"的东西称作"形 ...

  9. python日历gui_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...

    PyQt5日期时间控件QDateTimeEdit介绍 QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘上的上下键头按钮来增加或减少日期的时间值,QDateTimeEdit通过s ...

  10. 2021SWPU-ACM 预选赛题解 Tutorial of SWPU Pre-teammate Contest ( 2021 )

    文章目录 Tutorial of SWPU Pre-teammate Contest ( 2021 ) A. Hello ACM ! B. orange C. 老王的礼物 D. Team Fight ...

最新文章

  1. linux网络掉线频繁怎么设置,ubuntu频繁掉线
  2. windows下定期清理超过一定时间的文件
  3. centos7下别名(alias)的特殊用法
  4. stringbuilder寻找字符串位置可能存在多个 java_Java 语言基础amp;String
  5. 周期串plus 水题
  6. 【文件系统】NTFS、FAT32、exFAT
  7. 利用python对excel文件进行操作_数据处理-对Excel文件读取和操作和存储(python版)...
  8. kubernetes资源--RC和RS
  9. 关于Atmel A5D31平台ALC5640音频芯片的问题记录
  10. 【aliplayer】阿里播放器的使用
  11. 个人对于封装继承多态的理解
  12. 关于icon小图标的实现
  13. 腾讯往届笔试面试题整理大全
  14. 当powergui fft 中empty
  15. execute immediate使用方法
  16. 扩展坞可以把手机投到显示器吗_华为P20投屏助手,绿联USB-C扩展坞使用说明
  17. shiro实现无状态的会话,带源码分析
  18. API ,批量添加
  19. (OpenCV+Python)--目标跟踪,卡尔曼滤波+鼠标轨迹跟踪
  20. 类的成员函数指针(比较深入)

热门文章

  1. Windows7 SP1旗舰版精简版最终版本
  2. php制作judge评测机,HelloJudge2-Judger
  3. 激荡四十年,中国企业家群画像
  4. 笔记本计算机无法上无线网络,笔记本连不上无线网络如何解决?
  5. 【C++从入门到踹门】第十四篇:二叉搜索树
  6. 基于因子分析法分析新冠肺炎疫情对房地产业上市公司财务的影响
  7. 【笔记】第2章 向量
  8. VMware虚拟机安装Ubuntu 2022最新版详细图文安装教程(VMware虚拟机安装+Ubuntu下载+VMware虚拟机配置运行)
  9. celeste第二章_《蔚蓝(Celeste)》全水晶之心收集攻略
  10. MPS2326 Constant-On-Time (COT) Step-Down Converter DC-DC