hdu 4678 Mine 博弈论
这是一题简单的博弈论!!
所有的空白+边界的数字(个数为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 博弈论的更多相关文章
- hdu 4678 Mine
HDU 4678 把点开空地时会打开的一大片区域看成一块,题目中说到,在一盘游戏 中,一个格子不可能被翻开两次,说明任意两块空地不会包含相同的格子. 那么就可以看成一个组合游戏. 当空地旁边没连任何数 ...
- HDU 4678 Mine SG博弈
http://acm.hdu.edu.cn/showproblem.php?pid=4678 自己太蠢...没学SG...还是浩神指点我SG精髓以后才A的这题...(第一题SG 这里子游戏之间没有影响 ...
- HDU 4678 Mine (2013多校8 1003题 博弈)
Mine Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- HDU 4678 Mine(博弈)
Mine Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submi ...
- 2020杭电多校 10C / HDU 6879 - Mine Sweeper (构造)
HDU 6879 - Mine Sweeper 题意 定义<扫雷>游戏的地图中每个空白格子的值为其周围八个格子内地雷的数量(即游戏内临近地雷数量的提示) 则一张地图的值\(S\)为所有空白 ...
- HDU 5512 Meeting 博弈论
Meeting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5512 ...
- hdu 4664 Triangulation 博弈论
看到这题时,当时还不会做,也没搞懂sg函数,于是狠狠的钻研了下博弈论,渐渐的知道了sg函数…… 现在在来做这题就很容易了,1A 打表容易发现在80左右的时候就出现循环节了 代码如下: #include ...
- hdu 4678
HDU 4768: Flyer 题意: 有N个社团,每个社团三个属性A,B,C,表示会向编号A+k*C的同学发传单(k=0,1,2... && A+k*C <= B).题目保证 ...
- 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为一类. 比较各类的优先级,就会发现放置的顺 ...
随机推荐
- (转)实战Memcached缓存系统(4)Memcached的CAS协议
1. 什么是CAS协议 很多中文的资料都不会告诉大家CAS的全称是什么,不过一定不要把CAS当作中国科学院(China Academy of Sciences)的缩写.Google.com一下,CAS ...
- sqlplus 可以登录 plsql 不能登录
最开始我以为是system用户被锁定了,但是解锁后仍然不可以登录.大神指导之后可以了,说是缺少监听器,解决过程如下: 1.将“tnsnames.ora”和“listener.ora”两个文件里的“lo ...
- Sublime Text 破解
引言 放假三天,呆家里把win7换成了win8.1,接着玩起了hyperv,试着装了个windows xp虚拟机,体验很不错.不过对linux系统的支持不怎么样,装了个ubuntu,体验相当差!闲着无 ...
- Android TextUtil
Android中计算textView长度问题 今天有一个需求,需要TextView显示两行的信息,但是右下角区域需要空出来,要来显示一张小图片,要实现的效果如图所示. 这里遇到的问题是计算TextVi ...
- 使用rapid-framework自动生成struct2
在JavaWeb的开发中,对数据对象的操作不外乎增删改查,不同的数据对象,其action.service.model.jsp等都比较类似,如果手动去写这些代码,工作量大且非常繁琐.一个心高气傲的程序员 ...
- 关于浏览器兼容处理—— 识别IE浏览器
var b_name = navigator.appName;var b_version = navigator.appVersion;var version = b_version.split(&q ...
- flex 弹性盒子模型一些案例.html
Flexbox是布局模块,而不是一个简单的属性,它包含父元素和子元素的属性. Flex元素是可以让你的布局根据浏览器的大小变化进行自动伸缩. 自适应导航 <ul class="navi ...
- php代码加密|PHP源码加密——实现方法
Encipher - PHP代码加密 | PHP源码加密下载地址:https://github.com/uniqid/encipher 该加密程序是用PHP代码写的,加密后代码无需任何附加扩展,无需安 ...
- ComboBox Control Messages 消息
连接到MSDN,有时间完善这个.具体说明可点击进入msdn CB_ADDSTRING 添加一个字符串组合框的列表框.如果组合框没有cbs_sort风格,字符串添加到列表的结尾.否则,该字符串插入列表, ...
- Kakfa揭秘 Day8 DirectKafkaStream代码解析
Kakfa揭秘 Day8 DirectKafkaStream代码解析 今天让我们进入SparkStreaming,看一下其中重要的Kafka模块DirectStream的具体实现. 构造Stream ...