博弈论练习4 Calendar Game(SG函数)
题目链接在这里: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函数)的更多相关文章
- hdu 1079 Calendar Game sg函数 难度:0
Calendar Game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 博弈论(nim游戏,SG函数)
说到自己,就是个笑话.思考问题从不清晰,sg函数的问题证明方法就在眼前可却要弃掉.不过自己理解的也并不透彻,做题也不太行.耳边时不时会想起alf的:"行不行!" 基本的小概念 这里 ...
- 【博弈论】组合游戏及SG函数浅析
目录 预备知识 普通的Nim游戏 SG函数 预备知识 公平组合游戏(ICG) 若一个游戏满足: 由两名玩家交替行动: 游戏中任意时刻,合法操作集合只取决于这个局面本身: 若轮到某位选手时,若该选手无合 ...
- 关于sg函数的一些证明
复习csp2019的时候稍微看了看博弈论,发现自己对于sg函数的理解完全不到位 有些定义甚至想都没想过 于是就口胡了一篇blog来安慰虚弱的自己 Question 1 对于一个满足拓扑性质的公平组合游 ...
- 博弈论进阶之SG函数
SG函数 个人理解:SG函数是人们在研究博弈论的道路上迈出的重要一步,它把许多杂乱无章的博弈游戏通过某种规则结合在了一起,使得一类普遍的博弈问题得到了解决. 从SG函数开始,我们不再是单纯的同过找规律 ...
- [您有新的未分配科技点]博弈论入门:被博弈论支配的恐惧(Nim游戏,SG函数)
今天初步学习了一下博弈论……感觉真的是好精妙啊……希望这篇博客可以帮助到和我一样刚学习博弈论的同学们. 博弈论,又被称为对策论,被用于考虑游戏中个体的预测行为和实际行为,并研究他们的应用策略.(其实这 ...
- Nim游戏与SG函数 ——博弈论小结
写这篇博客之前,花了许久时间来搞这个SG函数,倒是各路大神的论文看的多,却到底没几个看懂的.还好网上一些大牛博客还是性价比相当高的,多少理解了些,也自己通过做一些题加深了下了解. 既然是博弈,经典的N ...
- 博弈论基础之sg函数与nim
在算法竞赛中,博弈论题目往往是以icg.通俗的说就是两人交替操作,每步都各自合法,合法性与选手无关,只与游戏有关.往往我们需要求解在某一个游戏或几个游戏中的某个状态下,先手或后手谁会胜利的问题.就比如 ...
- 【基础操作】博弈论 / SG 函数详解
博弈死我了……(话说哪个小学生会玩博弈论提到的这类弱智游戏,还取石子) 先推荐两个文章链接:浅谈算法——博弈论(从零开始的博弈论) 博弈论相关知识及其应用 This article was updat ...
- 博弈论 | 详解搞定组合博弈问题的SG函数
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天这篇是算法与数据结构专题的第27篇文章,我们继续深入博弈论问题.今天我们要介绍博弈论当中非常重要的一个定理和函数,通过它我们可以解决许多 ...
随机推荐
- Vue3+vite+Echarts案例大屏可视化--千峰(推荐)
https://www.bilibili.com/video/BV14u411D7qK?p=33&spm_id_from=pageDriver&vd_source=e2cfe74d93 ...
- mysql实训
MYSQL You have an error in your SQL syntax; check the manual that corresponds to your MySQL server v ...
- BBS 项目分析
项目开发流程 # 1.核心 文章的增删改查 # 2.表关系分析 确定表的数量,确定表的基础字段,最后确定表的外键字段 # 3.表 1.用户表 2.个人站点表 3.文章表 4.文章分类表 5.文章标签表 ...
- visual studio 2015 IOS开发连接mac时提示错误couldn't connect to xxxx, please try again的一个方法
本人使用虚拟机MAC.原本使用虚拟机中的VS2015连接正常没有问题. 但是当把MAC的虚拟机文件COPY到另一个机器上,提示"couldn't connect to xxxx, plea ...
- git当前分支修改文件不提交切换另一个分支(git stash)
出发前先讲故事:项目正在test分支更新版本我们疯狂的写bug,突然没更新前的版本出bug了(意料之中),此时呢我们要切换到master分支去改bug.此时此刻我test分支上修改的文件还不想提交,但 ...
- go: go.mod file not found in current directory or any parent directory; see 'go help mod 解决
go: go.mod file not found in current directory or any parent directory; see 'go help mod go:在当前目录或任何 ...
- locust socektio协议压测
# -*-coding:UTF-8 -*- from locust import HttpLocust, TaskSet, task, TaskSequence, Locust, events imp ...
- ES语法(简)
1.上编写到怎样安装部署elk,这篇记录怎样简单使用.以便于后期复习使用. 2.登录localhost:5601进入开发者模式. 3.初学担心没有数据可以自己PUT数据比较直观的学习语法.这里可以用网 ...
- js模块化 CommonJS和AMD/CMD ES6模块化
ES6之前已经出现了js模块方案,有CommonJS和AMD规范.commonjs实现同步加载应用于服务器,如nodejs.AMD为异步加载应用于浏览器,如requirejs. ES6在语言层面上模块 ...
- 【BOOK】解析库--pyquery
CSS选择器 1.初始化 html=''' <div> <ul> <li class="item-0">first item</li> ...