HDU3590[树形SG博弈]反博弈
来源:互联网 发布:大话手游神兵升级数据 编辑:程序博客网 时间:2024/05/01 20:16
题目:题目链接
题目:多棵树,删边游戏,最后一次操作的人输。
其中树的删边游戏:
叶子节点的SG值为0;中间节点的SG值为它的所有子节点的SG值加1 后的异或和。
ANTI-SG:
先手必胜当且仅当:(1)游戏的SG函数不为0且游戏中某个单一游戏的SG函数大于1;(2)游戏的SG函数为 0且游戏中没有单一游戏的SG函数大于1。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<vector>#include<algorithm>#define N 10005#define LL long long#define inf 1<<29#define eps 1e-7using namespace std;vector<int>v[100005];int get_sg(int u,int pre){ int ret=0; for(int i=0; i<v[u].size(); i++) if(v[u][i]!=pre)//点存在 ret^=(1+get_sg(v[u][i],u));//通过此点链接根 return ret;}int main(){ int t,n; while(scanf("%d",&t)!=EOF){ int ret=0,cnt=0; while(t--){ scanf("%d",&n); for(int i=1; i<=n; i++) v[i].clear(); for(int i=1; i < n; i++) { int x,y; scanf("%d%d",&x,&y); v[x].push_back(y); v[y].push_back(x); } int s=get_sg(1,-1);//带入根 if(s>1) cnt++; ret^=s; } if(cnt==0){ if(ret) puts("QQ"); else puts("PP"); } else{ if(ret) puts("PP"); else puts("QQ"); } } return 0;}
努力努力...
- HDU3590[树形SG博弈]反博弈
- POJ2599 [树形SG博弈]记忆化
- HDU1851(sg博弈+nim博弈)
- HDU3904【有向无环树形图SG博弈】
- POJ2425(树形,无向无环图博弈) SG函数
- 博弈,求SG值
- poj2960【Nim博弈,SG】
- 博弈 nim sg
- HDOJ1404(SG博弈)
- HDOJ1792(SG博弈)
- HDU 1536 (博弈SG)
- SG函数 博弈
- hdu1907||poj3480 sg博弈
- hdu 2509 sg博弈
- hdu 1729 sg博弈
- 博弈,求sg值
- zoj 3529 博弈SG
- HDOJ1729 [SG博弈]
- hello world
- POJ 3276 反转开灯问题 每次选取连续k个反转方向 问多少次方向相同
- RSA加密解密算法
- ubuntu下中文乱码解决方案(全)
- 让Win7系统下的硬盘不在狂闪的诀窍【mfxp】
- HDU3590[树形SG博弈]反博弈
- Fixatdl(二)
- UISegmentControl
- struct file
- 内核配置zc301 uvc USB摄像头 android usb 摄像头
- BaseAdapter与SimpleAdapter的使用
- BeginWaitCursor()、EndWaitCursor()和RestoreWaitCursor()3个成员函数处理等待光标
- 记录一下android常用系统权限(permission)
- 面试题21:从上往下打印二叉树