LUOGU P1512 伊甸园日历游戏
题目描述
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 伊甸园日历游戏相关推荐
- P1512 伊甸园日历游戏
题目 题目描述 Adam和Eve玩一个游戏,他们先从1900.1.1到2006.11.4这个日期之间随意抽取一个日期出来.然后他们轮流对这个日期进行操作: 1 : 把日期的天数加1,例如1900.1. ...
- [Luogu 1312] noip11 Mayan游戏
[Luogu 1312] noip11 Mayan游戏 Problem: Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即 ...
- luogu P2584 [ZJOI2006]GameZ游戏排名系统 Splay
luogu P2584 [ZJOI2006]GameZ游戏排名系统 Splay 实在不想调了QAQ... Code: #include <cstdio> #include <algo ...
- 【ybt高效进阶4-1-3】【luogu P5462】龙珠游戏 / X龙珠
龙珠游戏 / X龙珠 题目链接:ybt高效进阶4-1-3 / luogu P5462 题目大意 有一个队列(里面的数互不相同),然后你每次可以取出相邻的两个数,按它们的前后顺序放到另一个队列中,最终所 ...
- luogu P3041 [USACO12JAN]视频游戏的连击Video Game Combos
P3041 [USACO12JAN]视频游戏的连击Video Game Combos 题目大意: 给出n个字符串st[1-n],求一个长度为K的字符串,每匹配到st中的字符串就+1分,问最多能加几分 ...
- 【YBTOJ】【Luogu】取火柴游戏
思路: 经典NIM游戏 c o d e code code #include<iostream> #include<cstdio>using namespace std;int ...
- luogu P1199 【三国游戏】
首先很明显这是一道贪心题. 贪心方法很多dalao已经写出来了,找每个武将次大值最大的武将. 呢么我们定义一个数组\(f[N][2]\) , 其中\(f[i][0]\)用来储存第\(i\)个武将的次大 ...
- luogu P1834 速算游戏 题解
2022-01-13 20:52:15 thumb_up 0 模拟大题 模拟赛没人的碰题,不简单 前言:为了表达,一下将类似于"(((3+5)+2)+7)"的东西称作"形 ...
- python日历gui_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...
PyQt5日期时间控件QDateTimeEdit介绍 QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘上的上下键头按钮来增加或减少日期的时间值,QDateTimeEdit通过s ...
- 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 ...
最新文章
- linux网络掉线频繁怎么设置,ubuntu频繁掉线
- windows下定期清理超过一定时间的文件
- centos7下别名(alias)的特殊用法
- stringbuilder寻找字符串位置可能存在多个 java_Java 语言基础amp;String
- 周期串plus 水题
- 【文件系统】NTFS、FAT32、exFAT
- 利用python对excel文件进行操作_数据处理-对Excel文件读取和操作和存储(python版)...
- kubernetes资源--RC和RS
- 关于Atmel A5D31平台ALC5640音频芯片的问题记录
- 【aliplayer】阿里播放器的使用
- 个人对于封装继承多态的理解
- 关于icon小图标的实现
- 腾讯往届笔试面试题整理大全
- 当powergui fft 中empty
- execute immediate使用方法
- 扩展坞可以把手机投到显示器吗_华为P20投屏助手,绿联USB-C扩展坞使用说明
- shiro实现无状态的会话,带源码分析
- API ,批量添加
- (OpenCV+Python)--目标跟踪,卡尔曼滤波+鼠标轨迹跟踪
- 类的成员函数指针(比较深入)
热门文章
- Windows7 SP1旗舰版精简版最终版本
- php制作judge评测机,HelloJudge2-Judger
- 激荡四十年,中国企业家群画像
- 笔记本计算机无法上无线网络,笔记本连不上无线网络如何解决?
- 【C++从入门到踹门】第十四篇:二叉搜索树
- 基于因子分析法分析新冠肺炎疫情对房地产业上市公司财务的影响
- 【笔记】第2章 向量
- VMware虚拟机安装Ubuntu 2022最新版详细图文安装教程(VMware虚拟机安装+Ubuntu下载+VMware虚拟机配置运行)
- celeste第二章_《蔚蓝(Celeste)》全水晶之心收集攻略
- MPS2326 Constant-On-Time (COT) Step-Down Converter DC-DC