BZOJ 2463: [中山市选2009]谁能赢呢?【博弈】
2024-10-21 03:32:26
这题不科学~~本以为鬼谷子的钱袋是能在BZOJ写的最短的程序了,这题还要短…..好吧,思考难度神马的还是有点的(至少对我这种蒟蒻来说)。很明显这是道博弈论的题目,在纸上画出了n=1~4的博弈树,发现bob和alice是交替出现的…0.0 当时就在想不会这么巧吧。忍不住百度了下解题,果然是这样的,不过解题上说结论归纳可得。。。。弱弱的写一个自己的理解。设小明和小红交替下棋为一个周期,则根据规则一个周期内小红和小明下的棋的形状将是一个1*2的长方形,很容易得出n*n的棋盘当且仅当n为偶数时能被1*2的长方形完全覆盖,当n为奇数时,仅有一块不能被覆盖,于是类似于NIM游戏的构造法,很容易想到当对方走一步后,我总能走到1*2的长方形的另一端,因此当n为偶数时无论如何都是先手必胜,同理当n为奇数时,由于剩下一块不能被长方形覆盖,因此后手必胜
#include<iostream>
#include<cstdio>
#include <math.h>
#include <string.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
while (n!=0)
{
if ((n & 1) ==0)printf("Alice\n");elseprintf("Bob\n");
scanf("%d",&n);
}
return 0;
}
最新文章
- Lua 排行榜更新
- 基于pygtk的linux有道词典
- [PHP] - 性能加速 - 开启opcache
- css绘制三角形原理
- 【转】Linux Mint 17.2 gedit中文乱码
- css样式控制鼠标滑过显示
- c++11 其他特性(一)
- 8-13-Exercise
- 什么是系统,什么是算法 -- lemon OA 系统学习总结
- LeetCode Two Add Two Numbers (JAVA)
- Python 面向对象【2】
- 在微信小程序中,如何实现下拉刷新(模拟刷新)
- 添加xmlns:android=";http://schemas.android.com/apk/res/android";的意思
- 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)
- MySQL数据类型--与MySQL零距离接触 3-2 外键约束的要求解析
- Prometheus监控学习笔记之Prometheus的架构及持久化
- CC2 条理分明-----AACTP教你谈恋爱
- python进程同步,condition例子
- 【wireshark】抓包和文件格式支持
- 温故vue对vue计算属性computed的分析
热门文章
- sql中的exsits和not exsits
- solr scheme配置简介
- 理想路径——双向BFS
- "Uncaught SyntaxError: Unexpected token <;"错误完美解决
- 根据HTML语义化编码
- for循环输出i为同一值的问题
- Bootstrap历练实例:基本按钮组
- 响应式Web设计- Viewport
- shell脚本,通过传参求斐波那契数列如(0,1,1,2,3,5,8,13..........)
- C# 使用Epplus导出Excel [2]:导出动态列数据