AB棋
2016-03-31 13:57
218 查看
题目大意
一列棋盘,共N个格子。初始有一些格子有棋子。每次可以将一个棋子往左移动一格或者把一个棋子跳过其左边一格的棋子而到达左边两格,注意这两种操作均要求跳到的位置为空。不能操作者输。问先手是否有必胜策略。
相似题
游戏这和一道叫游戏的题目很相似。
那么参考那道题的思路后,变成了阶梯游戏,但和游戏不一样的是每次最多移动两个石子。
这是经典博弈问题,只需要把每个阶梯上的石子模3即可。
#include<cstdio> #include<algorithm> #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int maxn=10000+10; int a[maxn]; int i,j,k,l,t,n,m,ca; char ch; int main(){ scanf("%d",&ca); while (ca--){ n=0; ch=getchar(); while (ch!='0'&&ch!='1') ch=getchar(); a[0]=ch-'0'; while (1){ ch=getchar(); if (ch!='0'&&ch!='1') break; a[++n]=ch-'0'; } l=t=0; i=0; while (i<=n){ if (!a[i]){ ++i; ++t; } else{ k=0; while (i<=n&&a[i]) ++i,k++; ++i; if (t%2) l^=k%3; ++t; } } if (l) printf("first\n");else printf("second\n"); } }
相关文章推荐
- Microsoft Unit Test
- USETC 1060 秋实大哥与快餐店
- cocos2dx之界面响应提速
- D18
- centos 7.0下关闭&启动防火墙
- 学习编程小技巧
- 两分钟彻底让你明白Android Activity生命周期(图文)!
- 原已经安装好的nginx,现在需要添加一个未被编译安装的模块:
- Oracle相关账户几个语句
- android 图片轮播控件 Android-ConvenientBanner简单使用
- caffe cudnn出现错误: declaration is incompatible with "const char *cudnnGetErrorString(cudnnStatus_t)"
- 职场35岁现象:各位小伙伴接近了吗?!
- PID连续控制算法的表达式以及C语言实现
- Android自定义类似ProgressDialog效果的Dialog
- iOS conformsToProtocol
- memcached搭建缓存系统
- Java 多线程 synchronized关键字详解
- java操作cookie
- iOS基本UI控件总结
- iOS 去掉tableViewCell 点击效果 三个简单方法