HDU 1079
2024-08-27 18:32:56
题意略。
思路:dfs记忆化搜索即可。
#include<bits/stdc++.h>
using namespace std; int sg[][][];
int month_len[][]; bool is_leap(int y){
return (y % || (y % == && y % != ));
}
int dfs(int y,int m,int d){
if(sg[y][m][d] != -) return sg[y][m][d];
if(y > || (y == && m > ) ||
(y == && m == && d > )) return ;
bool signal = false;
if(d <= month_len[is_leap(y)][m % + ]) signal = true;
int a = ,b = ; int ny1 = y,nm1 = m,nd1 = d,ny2 = y,nm2 = m,nd2 = d;
if(d < month_len[is_leap(y)][m]) nd1 = d + ;
else if(m < ){
nm1 += ;
nd1 = ;
}
else{
ny1 += ;
nm1 = ;
nd1 = ;
}
a = dfs(ny1,nm1,nd1); if(signal){
if(m < ){
nm2 += ;
}
else{
ny2 += ;
nm2 = ;
}
b = dfs(ny2,nm2,nd2);
} return sg[y][m][d] = !(a & b);
} int main(){
month_len[][] = month_len[][] = ;
month_len[][] = ,month_len[][] = ;
month_len[][] = month_len[][] = ;
month_len[][] = month_len[][] = ;
month_len[][] = month_len[][] = ;
month_len[][] = month_len[][] = ;
month_len[][] = month_len[][] = ;
month_len[][] = month_len[][] = ;
month_len[][] = month_len[][] = ;
month_len[][] = month_len[][] = ;
month_len[][] = month_len[][] = ;
month_len[][] = month_len[][] = ;
memset(sg,-,sizeof(sg));
sg[][][] = ;
int T;
scanf("%d",&T);
while(T--){
int y,m,d;
scanf("%d%d%d",&y,&m,&d);
int ans = dfs(y,m,d);
printf("%s\n",ans ? "YES" : "NO");
}
return ;
}
最新文章
- HDU 4569 Special equations(取模)
- C#中使用Socket实现简单Web服务器
- 【USACO 2.3】Zero Sum(dfs)
- Linux C 字符串输出函数 puts()、fputs()、printf() 详解
- Sqlite学习笔记(二)&;&;性能测试
- M2: XAML Controls(2)
- Windows Phone8 中如何引用 SQLite 数据库
- ios视图切换之push与present混用
- 编写简单的hashCode方法
- SHELL编程笔记(二)之shell流程控制
- NOI全国赛(2001)--食物链
- [HNOI 2011]XOR和路径
- TCP连接建立系列 — 服务端发送SYNACK段
- webpack学习笔记 (一)
- C#中d的??和?
- AE缺失Form Trapcode Form
- java之jdbc使用
- Struts局部异常与全局异常处理
- K-近邻
- iostat磁盘监控工具
热门文章
- 一键布署WEB应用脚本
- HTML介绍和标签
- 数据库---T-SQL语句(一)
- Python 学习笔记 编程基础汇总000
- Python基础总结之第二天从变量开始(新手可相互督促)
- Codeforces Round #479 (Div. 3) D. Divide by three, multiply by two
- NPM - 检查并更新项目依赖的版本
- WPF滑块控件(Slider)的自定义样式
- Apache ActiveMQ 实践 <;一>;
- BootStrap实现简单响应式导航菜单