题目链接在这里: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. 使用HttpClient4.5 使用MultipartEntityBuilder 类发送 multipart/formdata 格式给第三方接口 失败的原因

    1.使用MultipartEntityBuilder的setCharset方法设置 utf-8格式2.在httppost 请求头上 加上Content-Type", "multip ...

  2. unity shader ide

    Shader Languages support for vs Code https://marketplace.visualstudio.com/items?itemName=slevesque.s ...

  3. C#textbox更改字体颜色只读后不起作用的解决办法

    textbox的属性ReadOnly设置为true只读后,只更改字体颜色并不起作用. 解决办法是,连同背景色一起设置即可. textBox1.BackColor =textBox1.BackColor ...

  4. ubuntu的vsftpd

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

  5. JS实现另存/打印功能

    代码实现 <div id="main"> <-- 需要保存的内容 --></div> <div @click="printdiv ...

  6. 启动JAVA服务

    # -*- coding: utf-8 -*- import re import sys from subprocess import Popen, PIPE import os import tim ...

  7. golang 指针

    一个指针变量指向了一个值的内存地址,类似于变量和常量,在使用指针前你需要声明指针. 每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置.使用&字符放在变量前面对变量进行" ...

  8. nodejs+koa 后台框架结构、demo学习地址

    框架结构例子 https://github.com/bayi-lzp/koa-template 官网例子(有很多 示例) https://github.com/koajs/examples <K ...

  9. centos-7实现批量ping

    批量ping 脚本 新接手了一个项目,10多个网段,500多机器,看自己机器可以连上多少服务器,一个个ping不符合我们的作风,因此百度了下大神的脚本,按自己的风格修改了,于是有了如下的脚本. 脚本如 ...

  10. 遍历List<Map<String,Object>>集合

    import java.util.*; public class HelloWorld { public static void main(String []args) { //定义一个List< ...