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

POJ 2311 Cutting Game

POJ 2311 Cutting Game

题目大意

有一张有w×hw\times hw×h个格子的长方形纸张,两个人轮流将当前的纸张中选一张,并沿着格子的边界将这张纸剪成两部分。最先切出只有一个格子的纸张(1×11\times 11×1的纸张)的玩家获胜。当双方都采用最优策略时,问先手必胜还是必败。必胜则输出WIN,必败则输出LOSE。

有多组数据。

数据范围

2≤w,h≤2002\leq w,h\leq 2002w,h200


题解

sg[i][j]sg[i][j]sg[i][j]表示i×ji\times ji×j的纸张的状态,那么枚举剪的位置kkk,则

sg[i][j]=mex{sg[i][k]⊕sg[i][j−k],sg[i][k]⊕sg[i][j−k]}sg[i][j]=mex\{sg[i][k]\oplus sg[i][j-k],sg[i][k]\oplus sg[i][j-k]\}sg[i][j]=mex{sg[i][k]sg[i][jk],sg[i][k]sg[i][jk]}

我们可以预处理出所有sg[i][j]sg[i][j]sg[i][j]

然后,对于每一组w,hw,hw,h,答案即为sg[w][h]sg[w][h]sg[w][h],可以O(1)O(1)O(1)得出。

时间复杂度为O(n3)O(n^3)O(n3)


code

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,z[205],sg[205][205];
int main()
{for(int i=1;i<=200;i++){for(int j=1;j<=200;j++){for(int k=0;k<=200;k++) z[k]=0;for(int k=2;k<i-1;k++){z[sg[k][j]^sg[i-k][j]]=1;}for(int k=2;k<j-1;k++){z[sg[i][k]^sg[i][j-k]]=1;}int x=0;for(;z[x];x++);sg[i][j]=x;}}while(scanf("%d%d",&n,&m)!=EOF){if(sg[n][m]) printf("WIN\n");else printf("LOSE\n");}return 0;
}
http://www.lryc.cn/news/58566.html

相关文章:

  • CTF-PHP反序列化漏洞1-基础知识
  • 【面试】记一次安恒面试及总结
  • 刹车制动(卡钳)TOP3供应商份额超50%,哪些本土供应商突围
  • Go分布式爬虫笔记(二十二)
  • 跨线程修改主界面
  • 国内ChatGPt研发-中国chatGPT
  • springboot的rest服务配置服务的根路径
  • MySQL B+Tree 索引优化技巧
  • 100种思维模型之逆向思维模型-46
  • C/C++每日一练(20230413)
  • volatile和synchronized的区别
  • Cadence Allegro 导出Unplaced Component Report报告详解
  • 面试了上百位性能测试后,我发现了一个令人不安的事实...
  • 天气预报查询 API + AI 等于王炸(一大波你未曾设想的天气预报查询 API 应用场景更新了)
  • 跨境电商的行业现状与发展趋势分析
  • 适配器设计模式
  • 代码随想录算法训练营第三十五天-贪心算法4| ● 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球
  • 2023MathorcupC题电商物流网络包裹应急调运与结构优化问题建模详解+模型代码(一)
  • 软件测试技术之跨平台的移动端UI自动化测试(上)
  • 【MySQL--02】库的操作
  • 人民链Baas服务平台上线,中创助力人民数据共建数据服务应用场景
  • 说说如何借助webpack来优化前端性能?
  • AiDD AI+软件研发数字峰会开启编程新纪元
  • 【远程开发】VSCode使用Remote SSH远程连接Linux服务器
  • C++纯虚函数和抽象类详解
  • 服务器上搭建jenkins打包工具
  • 全球化背景下,如何利用内容营销促进跨境电商业务增长
  • 数据库系统工程师——第二章 程序语言基础知识
  • UFT参数化的使用
  • Java模拟rank() over()函数获取分组排名的方法设计及实现