题目就是寻找有无必胜策略
一开始看错题意了,一直想用dp预处理下,结果发现就是简单的逻辑判断。
无论向后一天还是向后一月,均会改变奇偶性,除了4.30,9.30,11.30和非润年的2.28,在几个特殊日期中向后可能会改变奇偶性。
目标日期为11.4,偶数。
因此,无特殊日期时奇数必胜
而如果先手是偶数,其必然不会进入特殊日期,因为一旦奇偶改变,必胜变为必输……
如果先手为奇数,因为不存在必改变奇偶性的日期,所以进入特殊日期后也无法改变奇偶性,保持原状态……
因此只有在初始日期为特殊日期,先手才有改变奇偶使自己必胜的机会。
/* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <queue> #define INF 1E9 using namespace std; bool leap(int year) { if(year%4==0&&(year%100||year%400==0))return 1; return 0; } int main() { int T=0; scanf("%d",&T); int y,m,d; while(T--) { scanf("%d%d%d",&y,&m,&d); if((m+d)%2==0||(d==30&&(m==11||m==9||m==4))||(d==28&&m==2&&!leap(y)))puts("YES"); else puts("NO"); } }