当前位置: 首页 > 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.dtcms.com/a/295678.html

相关文章:

  • Qt(资源库和按钮组)
  • Django基础(八)———数据库外键及表关系
  • DRF - 博客列表API
  • GaussDB 数据库架构师(八) 等待事件概述-1
  • Spring Boot项目的模块继承父项目的全部依赖
  • 中国5G RedCap基站开通情况及2025年全年计划
  • 【ComfyUI学习笔记03】案例学习:图片放大的3个基本工作流
  • 基于规则架构风格对业务的重构
  • 与deepseek的问答:dot net与Borland VCL的关系
  • 抖音小游戏好做吗?
  • MySQL的底层原理--InnoDB记录存储结构
  • 【Unity开发】飞机大战项目实现总结
  • Unity GC 系列教程第四篇:GC Alloc 优化技巧与实践(下)与 GC 调优
  • DBA常用数据库查询语句(2)
  • 【学习路线】JavaScript全栈开发攻略:前端到后端的完整征程
  • Redis数据库入门教程
  • Windchill用SQL获取所有组织下的所有用户
  • C++11之可变参数模板
  • ac日志报ARP-neighbor-failed问题定位过程
  • langchain+本地embedding模型+milvus实现RAG
  • ChatGPT Agent架构深度解析:OpenAI如何构建统一智能体系统
  • 青少年编程学习的新选择——《CCF GESP 直通车》与《GESP 编程能力等级认证一本通》深度剖析
  • 根据字符串数组的顺序重新排序 List顺序
  • 中国历史朝代顺序以及朝代歌
  • 核心数据结构:DataFrame
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-18,(知识点:传输线阻抗匹配方式)
  • OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型
  • 电子书转PDF格式教程,实现epub转PDF步骤
  • Java 大视界 -- Java 大数据在智能家居能源管理与节能优化中的深度应用(361)
  • 多模态数据处理系统:用AI读PDF的智能助手系统分析