当前位置: 首页 > news >正文

洛谷P1512 伊甸园日历游戏

一开始,我发现有“必胜策略”,就知道是博弈论,然后看了两种操作(月份+1和天数+1),于是想到用记忆化搜索找出所有的可能性  ,但不知道怎么判断当前是否为先手必胜/必败态,使用了TJ方法后 ,才知道只要记录每个时间的状态,然后搜索即可

思路: 

      1. 记忆化搜索

#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int mth[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int n,x,y,z,f[2010][15][35],vis[2010][15][35];
bool check(int x,int y,int z){if(x<2006) return true;if(x==2006&&y<11) return true;if(x==2006&&y==11&&z<4) return true;return false;
}//判断当前时间有没有超过2006.11.3
int dfs(int x,int y,int z){if((x%4!=0||x%100==0)&&x%400!=0&&y==2&&z==29) return 1;//判断当年非闰年2月有29日的问题if(z>mth[y]) z=1,y++;if(y>12) x++,y=1;    //上面两行位置不能交换,必须从日期到月份if(vis[x][y][z]) return f[x][y][z];vis[x][y][z]=1;if(z<=mth[y+1]&&check(x,y+1,z)){f[x][y][z]=(dfs(x,y+1,z)^1);} if(check(x,y,z+1)){f[x][y][z]|=(dfs(x,y,z+1)^1);}//下一次操作为必败,则当前必胜,因此^1return f[x][y][z];}
int main(){f[2006][11][3]=1;dfs(1900,1,1); //初始化cin>>n;for(int i=1;i<=n;i++){cin>>x>>y>>z;if(f[x][y][z]) cout<<"YES"<<endl;else cout<<"NO"<<endl;}
}

http://www.xdnf.cn/news/1181287.html

相关文章:

  • SQL基础⑫ | 视图篇
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(三)
  • 基于深度学习的图像分类:使用MobileNet实现高效分类
  • Python进阶第三方库之Matplotlib
  • 深度学习(鱼书)day01--感知机
  • LeetCode 23:合并 K 个升序链表
  • 【C++】使用中值滤波算法过滤数据样本中的尖刺噪声
  • rust-方法语法
  • C++STL系列之set和map系列
  • 基于python django的农业可视化系统,以奶牛牧场为例
  • 用 Function Call 让 AI 主动调用函数(超入门级示例)|保姆级大模型应用开发实战
  • SpringBoot航空订票系统的设计与实现
  • 进阶系统策略
  • 技术赋能多元探索:我的技术成长与行业洞察
  • Linux应用开发基础知识——进程学习2(exec函数、system函数、popen函数)(三)
  • 斐波那契数列策略
  • 人形机器人_双足行走动力学:Maxwell模型及在拟合肌腱特性中的应用
  • Java学习----原型模式
  • 使用Claude Code从零到一打造一个现代化的GitHub Star项目管理器
  • day46day47 通道注意力
  • 无源域自适应综合研究【2】
  • C++ 性能优化
  • 力扣 hot100 Day54
  • pytest中使用skip跳过某个函数
  • 无人机速度模块技术要点分析
  • 第三章:掌握 Redis 存储与获取数据的核心命令
  • MNIST 手写数字识别模型分析
  • 秋叶sd-webui频繁出现生成后无反应的问题
  • 【Web APIs】JavaScript 节点操作 ⑧ ( 删除节点 - removeChild 函数 | 删除节点 - 代码示例 | 删除网页评论案例 )
  • 算法竞赛阶段二-数据结构(34)数据结构链表STL vector