2940: [Poi2000]条纹
条纹游戏是一个双人的游戏。所需要的物品有一个棋盘以及三种颜色的长方形条纹,这三种颜色分别是红色、绿色和蓝色。所有的红色条纹的尺寸是c*1,所有的绿色条纹的尺寸是z*1,所有的蓝色条纹的尺寸是n*1,这里c,z,n是正整数。每种颜色的条纹每个游戏者都拥有无限多个。
一个棋盘是一个尺寸为p*1的长方形,由p个1*1的方格组成。
游戏者轮流走,每一步都是由一个游戏者任选一种长方形条纹覆盖到棋盘上,并要求遵循以下规则:
条纹不能伸出棋盘之外。
不能覆盖在已有的条纹之上(即使部分也不行)。
条纹的边缘必须与棋盘方格的边缘相重叠。谁不能再走,谁就输了。

先手是指在游戏中第一个走的游戏者。那么是否不管后手怎么走,先手都有必胜策略呢?
任务:
写一个程序:
读入条纹的尺寸以及至少一个棋盘的尺寸。
对每一个给出的棋盘判断先手是否必胜。
将结果输出。
input
第一行包含三个整数c,z,n(1<=c,z,,n<=1000),表示三种条纹的长度,依次为红色,绿色以及蓝色。每两个数之间都用空格隔开。
文件的第二行包括一个整数m(1 <= m <= 1000)表示需要考虑的不同棋盘个数。以下3到m+2行每行包括一个整数p(1<=p<=1000)。第i+2行表示第i个棋盘的长度。
output
应当包含m行。只有一个数字应当被写入文件的第i行:
1—如果对第i个棋盘先手有必胜策略。
2—其它。

一个典型的博弈论题

可以知道只有最大和最小的两种条纹是有意义的

从三个颜色中选出长度最大和最小的两个分别记为l,r其中(l<=r)。

0 ~ L-1 必败
L ~ R+L-1 必胜
R+L ~ R+2L-1 必败
R+2L ~ 2R+2L-1 必胜
容易得出结论进行递推

代码可以网上搜索

最新文章

  1. CSS3 Notes: -webkit-box-reflect实现倒影
  2. highcharts曲线图
  3. java集合比较
  4. [安卓]AndroidManifest.xml文件简介及结构
  5. LNMP系列网站零基础开发记录(三)
  6. DataGridView 添加ComboBox
  7. C#后台找不到前台html标签
  8. 2.Freshman阶段学习内容的确定
  9. asp.net 输出Excel
  10. bootstrap switch功能
  11. springMVC学习总结(三)数据绑定
  12. SharedPreferences实现保存用户名功能
  13. HTML 5核心内容
  14. 【DOM练习】百度历史搜索栏
  15. TCP/IP协议网络编程以及UDP和TCP之传输协议
  16. sql 语句收集
  17. 在推送提交之后阻止Azure DevOps (TFS)持续集成
  18. MSDN离线版 发现不少人都在找这个
  19. day03作业
  20. GUC-9 ReadWriteLock : 读写锁

热门文章

  1. 如何从List&lt;T&gt;中筛选符合条件的数据的集合或个数
  2. 谈谈Perforce
  3. Codeforces Round #362 (Div. 2) A.B.C
  4. bzoj2119
  5. 《Qt 实战一二三》
  6. Windows Live Writer配置测试
  7. linux sed 命令
  8. 整理一些js中常见的问题
  9. PDO防注入原理分析以及使用PDO的注意事项 (转)
  10. xunsearch迅搜体验