HDU 1079 简单博弈
判断下一步能否到达必胜态,如果可以当前状态就是必败态,否则当前状态记为必胜态
#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 ;
}
HDU 1079 简单博弈的更多相关文章
- HDU 1564 简单博弈 水
n*n棋盘,初始左上角有一个石头,每次放只能在相邻的四个位置之一,不能操作者输. 如果以初始石头编号为1作为后手,那么对于每次先手胜的情况其最后一步的四周的编号必定是奇数,且此时编号为偶数,而对于一个 ...
- hdu 2897简单博弈
#include<stdio.h> int main() { int n,p,q,k; while(scanf("%d%d%d",&n,& ...
- Hdu 1079 Calendar Game
Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1079 一道博弈题.刚开始想用判断P点和N点的方法来打表,但无奈不知是哪里出错,总是WA.于是 ...
- ACM: NBUT 1107 盒子游戏 - 简单博弈
NBUT 1107 盒子游戏 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format: Practice Appoint ...
- HDU 4315 阶梯博弈变形
n个棋子,其中第k个是红色的,每个棋子只能往上爬,而且不能越过.重叠其他棋子,谁将红色棋子移到顶部谁赢. 由于只能往上爬,所以很像阶梯博弈.这题有2个限制,棋子不能重叠,有红棋存在 首先不考虑红色棋, ...
- HDU 1079 Calendar Game(简单博弈)
Calendar Game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- hdu 1846 Brave Game 简单博弈
Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中 ...
- HDU 1079 Calendar Game(博弈找规律)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1079 题目大意:给你一个日期(包含年月日),这里我表示成year,month,day,两人轮流操作,每 ...
- HDU 4642 Fliping game (2013多校4 1011 简单博弈)
Fliping game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
随机推荐
- 线程间的参数传递 分类: linux c/c++ 2014-06-15 17:48 607人阅读 评论(0) 收藏
在多线程编程中,常常需要从主线程传递参数给子线程或在主线程中获得子线程的计算结果, 若使用全局变量实现,必然需要对临界区保护,因此导致大量的切换工作造成效率的低下: 而利用进程间的参数传递可以解决这一 ...
- Python 学习之Virtualenv
Virtualenv是一个python环境的隔离工具,主要解决库的隔离和权限问题 Refer:中文版Virtualevn解释 用virtualenv创建多个python环境 我们360如何使用pyth ...
- 升级Python2.7
习惯于centos6.5的系统,却习惯使用Python2.7,每次都会升级Python版本,安装pip.于是总结了升级过程中遇到问题(原创) 升级Python2.7 注意的是 1.编译2.7时依赖问题 ...
- 掌握Spark机器学习库-08.7-决策树算法实现分类
数据集 iris.data 数据集概览 代码 package org.apache.spark.examples.examplesforml import org.apache.spark.Spark ...
- 摘:关于php调用.net的web service 踩过的坑
文档地址:http://www.cnblogs.com/wyycc/p/6722701.html
- 使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序
版权声明:本文为灿哥哥http://blog.csdn.net/caoshangpa原创文章,转载请标明出处. 一.直接使用VS2012/VS2013/VS2015生成XP兼容的可执行程序 Visua ...
- CAD参数绘制线型标注(网页版)
主要用到函数说明: _DMxDrawX::DrawDimRotated 绘制一个线型标注.详细说明如下: 参数 说明 DOUBLE dExtLine1PointX 输入第一条界线的起始点X值 DOUB ...
- Ubuntu16.04 python3.4.3升级到python3.7.1
python有两个版本,一个2版本,使用的是python:另一个是3版本,使用的是python3. 简易安装python后得到的3版本的版本号是python3.4.3. 可以使用下面的命令查看py版本 ...
- mysql事件【定时器】
一,借鉴[luo奔的蜗牛] 1.创建一张表 create table mytable ( id int auto_increment not null, name ) not null default ...
- SQLSTATE[23000]报错
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in order clause is ambiguous 这个问题在 ...