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

所有的空白+边界的数字(个数为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. 在win7下配置java编译环境变量

    今天刚接触java编程,环境的配置方法比较复杂.好记性不如烂笔头,发个文章记录一下吧. win7系统 Jdk版本1.6 用鼠标右击“我的电脑”->属性->高级->环境变量系统变量-& ...

  2. Commons-logging + Log4j

    一.Commons-logging能帮我们做什么? 1.提供一个统一的日志接口,简单了操作,同时避免项目与某个日志实现系统紧密耦合 2.自动选择适当的日志实现系统 a.classpath下查找comm ...

  3. iMAC——查看开机关机时间

    每次下班都记不好早上几点打的卡,你是不是也经常有这样的情况:  那就用以下的代码考到Mac电脑的终端中,回车: mac终端输入上面命令行 查看开机时间: last | grep reboot 查看关机 ...

  4. 40个容易上瘾的HTML5网页游戏,总有一款适合你

    我记得姐姐家的孩子在刚刚才学会走路,说话还不能完整的时候就已经能自己用小手点出小游戏的网站来一个人自娱自乐.我一直在想这一代跟着计算机一起茁壮成长的孩子会不会也和美国那一代人一样,出现9岁的黑客和计算 ...

  5. Oracle常见的问题

    1.oracle 中文问号乱码解决方法: 在系统变量里面添加变量名:NLS_LANG 变量值:  SIMPLIFIED CHINESE_CHINA.ZHS16GBK 2.查询oracle 里的主键 S ...

  6. IOCP模型总结(转)

    IOCP模型总结(转) IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型.它是应用程序使用线程池处理异步I/O请求的一种机制.在处理多个并发的异步I/O请求 ...

  7. google map 点与点画线

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. V9自定义分页函数

    大家做网站的时候,可能很多时候分页样式都得根据模板的要求来控制的,这时很多人都会去修改全局文件phpcms\libs\functions \global.func.php里的pages()函数,这样问 ...

  9. 国产CPU研究单位及现状

    1.国产CPU主要研制单位 (1)高性能通用CPU(“大CPU”,主要应用于高性能计算及服务器等) 主要研发单位:中国科学院计算所.北大众志.国防科技大学.上海高性能集成电路设计中心 (2)安全适用计 ...

  10. Windows api 函数全部列表 (未完成)

    网上找了很久,发现没有完整版的,msdn上面有,但是不方便查阅,所以想自己整理一下:由于工程量过于庞大,希望大家共同完成.MSDN:http://msdn.microsoft.com/en-us/li ...