题目链接在这里:D-Calendar Game_牛客竞赛博弈专题班组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏习题 (nowcoder.com)

这题网上有关于奇偶性来找规律的做法,有点人类智慧,这里就先考虑一种比较传统的sg函数做法。众所周知,sg函数意思是一个状态的胜负性由其后续状态推得,因此这就是一个dfs的过程。考虑到这里有多组数据,因此需要使用记忆化搜索。

 1 #include "bits/stdc++.h"
2 using namespace std;
3 int t;
4 int y,m,d;
5 int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
6 int sg[105][13][35];
7 void ckmon(int year){
8 year+=1900;
9 if (year%400==0 || (year%100!=0 && year%4==0))
10 mon[2]=29;
11 else
12 mon[2]=28;
13 }
14 int dfs(int yy,int mm,int dd){
15 int i,j;
16 if (sg[yy][mm][dd]!=-1)
17 return sg[yy][mm][dd];
18 if (yy==101 && mm==11 && dd==4) return 0;
19 if (yy>101 || (yy==101 && mm==11 && dd>4)){
20 return 1;
21 }
22 int ty=yy,tm=mm,td=dd+1;
23 ckmon(ty);
24 if (td>mon[tm]){
25 tm++;
26 if (tm>12){
27 ty++;
28 ckmon(ty);
29 tm=1;
30 }
31 td=1;
32 }
33 if (dfs(ty,tm,td)==0)
34 return sg[yy][mm][dd]=1;
35 ty=yy,tm=mm+1,td=dd;
36 if (tm>12){
37 ty++;
38 ckmon(ty);
39 tm=1;
40 }
41 if (td<=mon[tm]){
42 if (dfs(ty,tm,td)==0)
43 return sg[yy][mm][dd]=1;
44 }
45 return sg[yy][mm][dd]=0;
46 }
47 int main(){
48 int i,j;
49 scanf("%d",&t);
50 while (t--){
51 scanf("%d%d%d",&y,&m,&d);
52 memset(sg,-1,sizeof(sg));
53 y-=1900;
54 dfs(y,m,d);
55 if (sg[y][m][d]) printf("YES\n");
56 else printf("NO\n");
57 }
58 return 0;
59 }

博弈论练习4 Calendar Game(SG函数)的更多相关文章

  1. hdu 1079 Calendar Game sg函数 难度:0

    Calendar Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  2. 博弈论(nim游戏,SG函数)

    说到自己,就是个笑话.思考问题从不清晰,sg函数的问题证明方法就在眼前可却要弃掉.不过自己理解的也并不透彻,做题也不太行.耳边时不时会想起alf的:"行不行!" 基本的小概念 这里 ...

  3. 【博弈论】组合游戏及SG函数浅析

    目录 预备知识 普通的Nim游戏 SG函数 预备知识 公平组合游戏(ICG) 若一个游戏满足: 由两名玩家交替行动: 游戏中任意时刻,合法操作集合只取决于这个局面本身: 若轮到某位选手时,若该选手无合 ...

  4. 关于sg函数的一些证明

    复习csp2019的时候稍微看了看博弈论,发现自己对于sg函数的理解完全不到位 有些定义甚至想都没想过 于是就口胡了一篇blog来安慰虚弱的自己 Question 1 对于一个满足拓扑性质的公平组合游 ...

  5. 博弈论进阶之SG函数

    SG函数 个人理解:SG函数是人们在研究博弈论的道路上迈出的重要一步,它把许多杂乱无章的博弈游戏通过某种规则结合在了一起,使得一类普遍的博弈问题得到了解决. 从SG函数开始,我们不再是单纯的同过找规律 ...

  6. [您有新的未分配科技点]博弈论入门:被博弈论支配的恐惧(Nim游戏,SG函数)

    今天初步学习了一下博弈论……感觉真的是好精妙啊……希望这篇博客可以帮助到和我一样刚学习博弈论的同学们. 博弈论,又被称为对策论,被用于考虑游戏中个体的预测行为和实际行为,并研究他们的应用策略.(其实这 ...

  7. Nim游戏与SG函数 ——博弈论小结

    写这篇博客之前,花了许久时间来搞这个SG函数,倒是各路大神的论文看的多,却到底没几个看懂的.还好网上一些大牛博客还是性价比相当高的,多少理解了些,也自己通过做一些题加深了下了解. 既然是博弈,经典的N ...

  8. 博弈论基础之sg函数与nim

    在算法竞赛中,博弈论题目往往是以icg.通俗的说就是两人交替操作,每步都各自合法,合法性与选手无关,只与游戏有关.往往我们需要求解在某一个游戏或几个游戏中的某个状态下,先手或后手谁会胜利的问题.就比如 ...

  9. 【基础操作】博弈论 / SG 函数详解

    博弈死我了……(话说哪个小学生会玩博弈论提到的这类弱智游戏,还取石子) 先推荐两个文章链接:浅谈算法——博弈论(从零开始的博弈论) 博弈论相关知识及其应用 This article was updat ...

  10. 博弈论 | 详解搞定组合博弈问题的SG函数

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天这篇是算法与数据结构专题的第27篇文章,我们继续深入博弈论问题.今天我们要介绍博弈论当中非常重要的一个定理和函数,通过它我们可以解决许多 ...

随机推荐

  1. ubuntu的vsftpd

    先输入vsftp -v查看自己的ubuntu是不是已经安装了vsftpd 没有安装的样子 安装的样子 如果没有安装先安装,输入下面的东西 apt-get install vsftpd 进行安装,安装好 ...

  2. flex布局,均分的剩余空间不等分问题

    flex布局:使用flex-grow均分剩余空间,每个盒子都要给个初始宽度,才能均分

  3. ABAP 范围表 range table

    范围表定义: DATA gr_test TYPE RANGE OF char6. 做选择屏幕的时候 范围选择框 默认就是一个范围表 范围表内容: 通过断点调试可以看到,范围表有4列 sign opti ...

  4. stm32 窗口看门狗

    窗口看门狗一般要在几十毫秒后开始喂狗 窗口看门狗在执行0x40时会调用回调函数, 回调函数可以执行喂门狗,否则会执行到0x3F直接复位 参考链接: https://blog.csdn.net/weix ...

  5. [转]failed to recv data in handshakeReceive2Callback

    转自:http://xiaix.me/blog/27.html "failed to recv data in handshakeReceive2Callback"错误 一直用的好 ...

  6. python中使用to_excel时如何不覆盖原有数据来新建sheet页

    经常通过各种三方库操作Excel时,会遇到各种问题.这个库不支持这个方法,那个库支持但是又会丢失原来的数据....都是问题! . . . import openpyxl import pandas a ...

  7. ubuntu 系统增加源和删除源文件

    一.添加PPA源文件 语法格式:sudo add-apt-repository ppa:user/ppa-name 示例: sudo add-apt-repository ppa:sergiomeji ...

  8. windows 安装配置mysql 8,以及远程连接访问

    官网下载mysql8,https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip 1.解压zip包到安装目录 比如我的安 ...

  9. 攻防世界Web进阶篇——NewsCenter

    题目有一个搜索框,下面是搜索结果,最先考虑是sql注入 遇到sql注入,一般先用单引号,1,2尝试.先尝试构造输入为:sd' union select 1,2 #和sd' union select 1 ...

  10. Docker部署Nastool(含jellyfin、transmission)

    先弄清楚原理 首先从[资源搜索]或者[推荐栏目]寻找自己想看的电影,执行订阅或者搜索资源启动下载,下载电影存放在downloads/mov目录下,[媒体整理]就是将mov子目录下电影文件复制到down ...