这是一题简单的博弈论!!

所有的空白+边界的数字(个数为n)为一堆,容易推出其SG函数值为n%2+1;

其他所有的数字(个数为m)的SG值为m%2。

再就是用dfs将空白部分搜一下即可!(注意细节)

代码如下:

 #include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#define MAX 1005
#pragma comment(linker,"/STACK:1024000000,1024000000")
using namespace std;
int vis[MAX][MAX],m,n,k,tot,cnt,ans,num;
int d[][]={{-,-},{-,},{-,},{,-},{,},{,-},{,},{,}};
int cal(int i,int j)
{
int ans=;
if(i->=){
ans+=(vis[i-][j]==-);
if(j->=) ans+=(vis[i-][j-]==-);
if(j+<m) ans+=(vis[i-][j+]==-);
}
if(j->=){
ans+=(vis[i][j-]==-);
if(i+<n) ans+=(vis[i+][j-]==-);
}
if(j+<m){
ans+=(vis[i][j+]==-);
if(i+<n) ans+=(vis[i+][j+]==-);
}
if(i+<n) ans+=(vis[i+][j]==-);
return ans;
}
void dfs(int a,int b)
{
int t,u,v;
if(vis[a][b]==-) return;
if(vis[a][b]>=){
vis[a][b]=-;
num++;tot++;
return;
}
if(vis[a][b]==-){
t=cal(a,b);
tot++;
vis[a][b]=-;
if(t==){
for(int i=;i<;i++){
u=a+d[i][];
v=b+d[i][];
if(u>=&&u<n&&v>=&&v<m)
dfs(u,v);
}
}
else{
num++;
return ;
}
}
else return ;
}
void solve()
{
int i,j,k,u,v;
tot=;cnt=;ans=;
for(i=;i<n;i++){
for(j=;j<m;j++){
if(vis[i][j]==-){
int t=cal(i,j);
if(t>) vis[i][j]=t;
else{
tot++;cnt++;
num=;
vis[i][j]=-;
for(k=;k<;k++){
u=i+d[k][];
v=j+d[k][];
if(u>=&&u<n&&v>=&&v<m)
dfs(u,v);
}
ans^=(num%+);
}
}
}
}
return ;
}
int main(){
int t,i,j,u,v,w=;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&m,&k);
for(i=;i<n;i++)
for(j=;j<m;j++)
vis[i][j]=-;
for(i=;i<k;i++){
scanf("%d%d",&u,&v);
vis[u][v]=-;
}
solve();
int ans1=(n*m-k-tot)%;
printf("Case #%d: ",++w);
if(ans1^ans) puts("Xiemao");
else puts("Fanglaoshi");
}
return ;
}

hdu 4678 Mine 博弈论的更多相关文章

  1. hdu 4678 Mine

    HDU 4678 把点开空地时会打开的一大片区域看成一块,题目中说到,在一盘游戏 中,一个格子不可能被翻开两次,说明任意两块空地不会包含相同的格子. 那么就可以看成一个组合游戏. 当空地旁边没连任何数 ...

  2. HDU 4678 Mine SG博弈

    http://acm.hdu.edu.cn/showproblem.php?pid=4678 自己太蠢...没学SG...还是浩神指点我SG精髓以后才A的这题...(第一题SG 这里子游戏之间没有影响 ...

  3. HDU 4678 Mine (2013多校8 1003题 博弈)

    Mine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...

  4. HDU 4678 Mine(博弈)

    Mine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submi ...

  5. 2020杭电多校 10C / HDU 6879 - Mine Sweeper (构造)

    HDU 6879 - Mine Sweeper 题意 定义<扫雷>游戏的地图中每个空白格子的值为其周围八个格子内地雷的数量(即游戏内临近地雷数量的提示) 则一张地图的值\(S\)为所有空白 ...

  6. HDU 5512 Meeting 博弈论

    Meeting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5512 ...

  7. hdu 4664 Triangulation 博弈论

    看到这题时,当时还不会做,也没搞懂sg函数,于是狠狠的钻研了下博弈论,渐渐的知道了sg函数…… 现在在来做这题就很容易了,1A 打表容易发现在80左右的时候就出现循环节了 代码如下: #include ...

  8. hdu 4678

    HDU 4768: Flyer 题意: 有N个社团,每个社团三个属性A,B,C,表示会向编号A+k*C的同学发传单(k=0,1,2...  && A+k*C <= B).题目保证 ...

  9. hdu 4023 Game 博弈论

    思路: 将15种分成5类: 1.1和2为一类: 2.3,4,5,6为一类: 3.7,8,9,10为一类: 4.11,12,13,14,15为一类: 5.15为一类. 比较各类的优先级,就会发现放置的顺 ...

随机推荐

  1. MyEclipse自动提示

    MyEclipse自动提示 Eclipse中默认是输入"."后出现自动提示,用于类成员的自动提示,可是有时候我们希望它能在我们输入类的. 首字母后就出现自动提示,可以节省大量的输入 ...

  2. C#中Predicate<T>与Func<T, bool>泛型委托的用法实例

    本文以实例形式分析了C#中Predicate<T>与Func<T, bool>泛型委托的用法,分享给大家供大家参考之用.具体如下: 先来看看下面的例子: 1 2 3 4 5 6 ...

  3. Repeater内RadioButton.GroupName失效

    最近在做项目时遇到要在repeater中显示多个radiobutton并且实现单选功能,于是很自然地就加上了GroupName,但事实是不行的,在repeater中的radiobutton呈现到页面的 ...

  4. 【知识分享】UIButton setTitle 设置为空 失效

    今天开发练习超级猜图,但是碰到了一个奇怪的问题 困扰我一个晚上,低效的夜晚 可恨~ 示例说明1 [button setTitle:@"" forState:UIControlSta ...

  5. JavaScript DOM编程艺术第一章:JavaScript简史

    本系列的博客是由本人在阅读<JavaScript DOM编程艺术>一书过程中做的总结.前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助, ...

  6. tinyMCE自定义添加图片插件

    需求: 在富文本编辑器中插入图片,图片来自用户可以自己上传的图片库. 本来可以用比较恶心的方式,也就是直接用tinyMCE自带的插入图片插件来实现.恶心是因为这个图片插件需要用户填入图片的url. 想 ...

  7. 将一个应用程序添加做成windows服务

    需求来源: 在服务器端运行的一个应用程序,为完成客户端路径分析等功能: 此应用程序只需要运行着就可以,没有界面等要求: 因此,考虑把此应用程序添加到服务器端电脑管理的服务中,可以启动和停止. 这里添加 ...

  8. Linux C 程序 预处理,结构体(13)

    C语言预处理,结构体 C语言预处理命令1.宏定义 1.无参数宏 #define 标识符 字符串 #代表本行是编译预处理命名 习惯上,宏定义大写 代替一个字符串,介绍重复书写某个字符串的工作量 有意义的 ...

  9. Linux 下添加普通用户,登陆并删除

    adduser 命令.LINUX创建用户的命令useradd -g test -d /home/test1 -s /etc/bash -m test1注解:-g 所属组 -d 家目录 -s 所用的SH ...

  10. 禁止指定目录执行php文件

    我们设置网站权限的时候,有些目录不得不设置让http服务器有写入权限,这样安全隐患就来了.比如discuz x2的 data目录,这个必须要有写入限,论坛才能正常运行,但有的黑客可能就会利用这个目录上 ...