原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1457

看了网上dalao的题解,好像解释得并不是很清楚,就按照那种思路,自己YY了一个想法,写出来居然跟std是一样的。

首先如果刚开始棋盘上有X=0或Y=0或X==Y先特判掉。

如果我们把走到(0,0)对应于将一堆石子取空,那么剩下的难点在于一般的Nim游戏是所有石子堆均被取空则游戏结束,而这里只要一堆空就结束了,这很气……

那么我们需要考虑转换一下一堆石子被取空时对应的情景。

如果有人走到X=0或Y=0或X==Y,对手即刻就胜利了,最优策略里谁都不会这么走,也就是说,走到X=0或Y=0或X==Y这种情况是不被允许的。要是有人实在没办法走别的地方,必须走这里,他就输了。这里就转化为不允许走到X=0或Y=0或X==Y,谁无法在这一限制内继续行动,就是失败者。

这样一来就是正常的Nim题了。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define MN 1000
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
int T,n,m,a,b,mmh,MMH,sg[][];
bool bo[];
int main(){
register int i,j;
for (i=;i<;i++)
for (j=;j<;j++)
if (i!=j){
memset(bo,,sizeof(bo));
for (int k=;k<i&&k<j;k++) bo[sg[i-k][j-k]]=;
for (int k=;k<i;k++) if (i-k!=j) bo[sg[i-k][j]]=;
for (int k=;k<j;k++) if (i!=j-k) bo[sg[i][j-k]]=;
for (int k=;;k++) if (!bo[k]){sg[i][j]=k;break;}
}
T=read();
while (T--){
n=read();mmh=MMH=;
while (n--){
a=read();b=read();
if (a==&&b==) MMH|=;
if (a==||b==||a==b) MMH|=;else mmh^=sg[a][b];
}
if (MMH) puts(MMH==?"^o^":"T_T");else puts(mmh?"^o^":"T_T");
}
}

YY成功真开心。

bzoj:1457: 棋盘游戏的更多相关文章

  1. BZOJ 3901 棋盘游戏 (找结论+枚举+贪心)

    题面 略 BZOJ 传送门 分析 具体分析见 dalao博客 妙就妙在当i<x,j<xi<x,j<xi<x,j<x时,(i,j)(i,j)(i,j) ^ (i,x) ...

  2. BZOJ 3901 棋盘游戏 解题报告

    这题有个重要性质: 我们设 Flag[i][j] 表示 (i, j) 是否被奇数个操作所覆盖, 也就是操作次数对 2 取模. 设 x = (n + 1) / 2. 那么对于所有的合法的操作方案, 令 ...

  3. BZOJ 3106 棋盘游戏

    Description 一个\(n \times n(n \le 2)\)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. ...

  4. 博弈论题目总结(二)——SG组合游戏及变形

    SG函数 为了更一般化博弈问题,我们引入SG函数 SG函数有如下性质: 1.如果某个状态SG函数值为0,则它后继的每个状态SG函数值都不为0 2.如果某个状态SG函数值不为0,则它至少存在一个后继的状 ...

  5. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  6. 【BZOJ 3106】 3106: [cqoi2013]棋盘游戏 (对抗搜索)

    3106: [cqoi2013]棋盘游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 544  Solved: 233 Description 一个 ...

  7. BZOJ 3106: [cqoi2013]棋盘游戏(对抗搜索)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3106 对抗搜索,f[x][y][a][b][c][d]表示当前谁走,走了几步,及位置. (因为 ...

  8. bzoj千题计划200:bzoj3106: [cqoi2013]棋盘游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=3106 白棋如果第一步不能赢,那么一定输 因为可以黑棋走的距离比白棋大,黑棋可以下一步吃掉白棋,也可以 ...

  9. BZOJ 3106: [cqoi2013]棋盘游戏

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 859  Solved: 356[Submit][Status][Discuss] Descriptio ...

随机推荐

  1. Python3入门笔记(1) —— windows安装与运行

    Python的设计哲学是"优雅"."明确"."简单".这也是我喜欢Python的理由之一 Python的安装: 1.进入Python官方网站 ...

  2. iOS OC应用异常捕获,崩溃退出前返回信息给后台

    第三方的了,有友盟,腾讯的bugly 查了一下网上类似的代码很多,在借鉴前辈的代码后,组合了一下: 1.捕获异常信息 2.获得当前日期,版本,系统 3.获得出bug的视图控制器转为字符串 4.将前3条 ...

  3. 函数PYXX_READ_PAYROLL_RESULT的dump问题

    发现有两个HR的后台定时任务出现dump,日志表示,是PYXX_READ_PAYROLL_RESULT产生了类型冲突的异常CX_SY_DYN_CALL_ILLEGAL_TYPE. 日志标题部分: 类别 ...

  4. htpasswd 命令详解

    htpasswd参数 -c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容. -n 不更新passwordfile,直接显示密码 -m 使用MD5加密(默 ...

  5. 使用puppet

    首先配置一个默认文件 只是首次创建的时候才需要重启,后期不需要重启! [root@master manifests]# vim /etc/puppet/manifests/site.pp node d ...

  6. IDA分析脱壳后丢失导入表的PE

    1. 问题 一些程序经过脱壳后(如用OD的dump插件),一些导入表信息丢失了,导致拖入IDA后看不到API的信息(如右图所示,第一个红圈处实际是GetCurrentProcessId),给分析造成极 ...

  7. Sum of odd and even elements

    Given an integer N, you have to print the sum of odd numbers and even numbers form 1 to N Input:Firs ...

  8. touchstart和touchend事件

    touchstart和touchend事件 移动互联网是未来的发展趋势,现在国内很多互联网大佬都在争取移动这一块大饼,如微信及支付宝是目前比较成功的例子,当然还有各种APP和web运用. 由于公司的需 ...

  9. ES6 函数的扩展3

    箭头函数 基本用法 ES6允许使用"箭头"(=>)定义函数 var f = v => v; 上面的箭头函数等同于: var f = function(v) { retu ...

  10. Struts2-整理笔记(一)介绍、搭建、流程、详解struts.xml

    Struts2是一种前端的技术框架 替代Servlet来处理请求   Struts2优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交   搭建框架:导 ...