这个题看上去本来不好处理,然而善意的题面已经基本告诉你做法了,小时候玩的那个游戏就是代码的核心。动动脑子想想,如果长和宽的积是奇数,那么一定要先手,如果是偶数,那么后手就会获胜。

好了,那么怎么处理对称情况呢,随便画一个小棋盘试一试,很容易得出是x-i+1和m-y+1。这之后就是颜色的问题了,因为题目有颜色的限制和对方耍赖这一操作,所以我们每一次放棋子的颜色也有要求。

再画一个小棋盘模拟一下,容易得出是偶数时要放不一样的,奇数时放一样的。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define re register
#define wc 0.0000000001
using namespace std;
int n,m,map[][],t,x,a[],y,c,cc;
int main()
{
cin>>n>>m;
memset(map,,sizeof(map));
if(n*m%==)
{
cout<<"First"<<endl<<n/+<<" "<<m/+<<" "<<<<endl;
map[n/+][m/+]=;
while(cin>>x>>y>>c)
{
if(c==)
cc=-;
else
cc=;
if(x+<=n&&map[x+][y]==cc||x->&&map[x-][y]==cc||y+<=m&&map[x][y+]==cc||y->&&map[x][y-]==cc)
{
cout<<"Buwanle";
return ;
}
map[x][y]=cc;
cout<<n-x+<<" "<<m-y+<<" "<<c<<endl;
map[n-x+][m-y+]=cc;
}
}else
{
cout<<"Second"<<endl;
while(cin>>x>>y>>c)
{
if(c==)
cc=-;
else
cc=;
if(x+<=n&&map[x+][y]==cc||x->&&map[x-][y]==cc||y+<=m&&map[x][y+]==cc||y->&&map[x][y-]==cc)
{
cout<<"Buwanle";
return ;
}
map[x][y]=cc;
cout<<n-x+<<" "<<m-y+<<" "<<(c^)<<endl;
map[n-x+][m-y+]=cc*(-);
}
}
}

最新文章

  1. Java基础知识总结
  2. Quartus II 增量编译
  3. centos如何卸载软件
  4. UITableView相关知识点
  5. hihoCoder 1305 区间求差
  6. python练习程序(c100经典例15)
  7. SQL Server 2005/2008 触发器的管理和查看
  8. 获取某个文件夹中所有txt文件
  9. Android Volley 之自定义Request
  10. 链接文本在a标签内标签里也可以用driver.find_element_by_link_text
  11. TGI
  12. Openlayers系列(一)关于地图投影相关错误的解决方案
  13. 记录Nginx实现内容重定向的两种方式:rewrite和反向代理
  14. YARN调试过程中的常见问题
  15. Firefox下载附件乱码的解决办法
  16. md5Util
  17. 利用Qt Designer 进行 空间提升propomotion 的时候异常: NO such file or directory
  18. spring 、spring boot 常用注解
  19. koa/redux middleware 深入解析
  20. CentOS6.5安装Tomcat8.0

热门文章

  1. 性能百万/s:腾讯轻量级全局流控方案详解【转自Wetest】
  2. FileToolkit 文件工具箱
  3. &quot;无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。&quot; —— 的解决方法
  4. MVC架构模式概述
  5. dfs-求连通块
  6. SVN中分支的建立与合并
  7. offset,scroll,client系列
  8. 印象笔记windows端-快捷键大全
  9. LeetCode-11-6
  10. C#数组实践