博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 4131: 并行博弈(博弈)
阅读量:2143 次
发布时间:2019-04-30

本文共 1072 字,大约阅读时间需要 3 分钟。

Time Limit: 10 Sec  
Memory Limit: 256 MB
Submit: 42  
Solved: 29
[ ][ ][ ]

Description

lyp和ld在一个n*m的棋盘上玩翻转棋,游戏棋盘坐标假设为(x, y),1 ≤ x ≤ n,1 ≤ y ≤ m,这个游戏的游戏的的游戏规则如下:
每次可以操作坐标为 (x, y) 的棋子,要求棋子 (x, y) 必须是黑色,并且同时翻转所有棋子坐标 (x’, y’) 满足 x’≤x, y’≤y。
lyp觉得这样还不够过瘾,于是乎他打算同时玩 k 个这样的游戏, 每次可以对其中某一个游戏进行操作,lyp先手,ld后手,两人轮流进行操作,最后无法进行操作的人判输,现在给你这个游戏的局面,要求输出是先手必胜(“lyp win”)还是后手必胜(“ld win”)。

Input

第一行一个数T,表示数据组数。
接下来T组数据,对于每一组数据:
接下来一行一个数K,表示有多少个游戏在进行中,
接下来K部分,每部分第一行两个数n,m表示棋盘大小,
接下来n行,每行m个数,0 表示这个棋子是白色,1表示为黑色,第一行第一列代表棋子坐标(1,1)。

Output

对于每一组数据,换行输出先手必胜(“lyp win”)还是后手必胜(“ld win”),输出不包含引号。

Sample Input

1
1
2 2
1 1
1 0

Sample Output

lyp win

为什么这么水的题没人写。。

只要(1,1)是黑色那么先手必胜,否则先手必败

证明很简单:

很显然每个人无论怎么操作都一定会改变格子(1,1)的颜色,而当面对全白色的人必败,证毕

而这题是多个棋盘,那就和尼姆博奕一样么,将所有结果异或起来就ok了

用gets()不要太快,直接从1000ms+变成76ms

#include
char str[10005];int main(void){ int T, k, n, m, i, x, ans; scanf("%d", &T); while(T--) { ans = 0; scanf("%d", &k); while(k--) { scanf("%d%d%d", &n, &m, &x); ans ^= x; for(i=1;i<=n;i++) gets(str+1); } if(ans) printf("lyp win\n"); else printf("ld win\n"); } return 0;}

转载地址:http://fmmgf.baihongyu.com/

你可能感兴趣的文章
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
Redis学习笔记(四)—— redis的常用命令和五大数据类型的简单使用
查看>>
Win10+VS2015编译libcurl
查看>>
Windows下使用jsoncpp
查看>>
Ubuntu下测试使用Nginx+uWsgi+Django
查看>>
Windows下编译x264
查看>>
visual studio调试内存泄漏工具
查看>>
开源Faac实现PCM编码AAC
查看>>
Windows下wave API 音频采集
查看>>
借船过河:一个据说能看穿你的人性和欲望的心理测试
查看>>
AndroidStudio 导入三方库使用
查看>>
Ubuntu解决gcc编译报错/usr/bin/ld: cannot find -lstdc++
查看>>
解决Ubuntu14.04 - 16.10版本 cheese摄像头灯亮却黑屏问题
查看>>
解决Ubuntu 64bit下使用交叉编译链提示error while loading shared libraries: libz.so.1
查看>>
VS生成DLL文件供第三方调用
查看>>
Android Studio color和font设置
查看>>
Python 格式化打印json数据(展开状态)
查看>>
Centos7 安装curl(openssl)和libxml2
查看>>
Centos7 离线安装RabbitMQ,并配置集群
查看>>