博弈论练习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篇文章,我们继续深入博弈论问题.今天我们要介绍博弈论当中非常重要的一个定理和函数,通过它我们可以解决许多 ...
随机推荐
- mysql 消息表分区方案
首先先看消息表创建脚本 我们用hash分区 在字段 user_id 分成100个区 CREATE TABLE `messages` ( `id` int(10) unsigned NOT NULL A ...
- 7.项目结构的构建和提交到gitee
创建微服务模块 以商城项目的产品模块为例 点击Next,然后倒入依赖的包,Spring Web 然后在选择一个微服务和微服务之间调用需要的包:OpenFeign 导入这两个微服务的组件就行,后面需要用 ...
- mqtt安装和使用
linux下 下载: wget https://www.emqx.io/downloads/broker/v3.2.1/emqx-centos7-v3.2.1.zip 解压:unzip emqx-ce ...
- Net6的核心组件之中间件
Net6的核心组件之中间件 What is Middleware? 1.广义上来讲:Tomcat.WebLogic.Redis.IIS:狭义上来讲,ASP.NET Core中的中间件指ASP.NET ...
- uni-app 下载文件 预览 + 保存自定义目录
作为使用uni-app的小白来说 尝试了好几种方法 终于得到了我想要的效果(如下) 1.点击下载按钮(文件 或者图片) 2.预览 :用户自定义选择查看的软件(图片在手机相册 文件用其他打开预览) ...
- Profiler中WaitForTargetFPS详解【转】
WaitForTargetFPS 该参数一般出现在 CPU开销过低,且通过设定了目标帧率的情况下(Application.targetFrameRate).当上一帧低于目标帧率时,将会在本帧产生一个W ...
- WindowsServer2012搭建FTP服务器站点
公司需要搭建一个FTP服务器给银行推送账单,这个文章整理的比较详细,可以参考 数据来源: https://blog.csdn.net/u010483330/article/details/125931 ...
- MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER
1. 排名分类 1.1 区别RANK,DENSE_RANK和ROW_NUMBER RANK并列跳跃排名,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名. DENSE_RAN ...
- CF1557总结
CF1557总结 Codeforces Round #737 (Div. 2) 先看了 A .意思是要把序列分成两个子序列,使得两序列各自平均值的和最小,输出最小值,要求 \(O(n)\) .想半天然 ...
- CSS3-animation实现走马灯效果
动画animation 1.先定义动画: @keyframes 动画名称( from{} to{} ) 或者 @keyframes 动画名称( 0%{} 50%{} 100%{} ) 百分号指的是动画 ...