bzoj4730: Alice和Bob又在玩游戏
Description
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- const int N=;
- int T,n,m;
- int es[N*],enx[N*],e0[N],ed[N],ep=,f[N];
- int sz[N*],ch[N*][],xt[N*],rt[N],p=;
- void tag(int w,int h,int v){
- if(w&&h>=&&v){
- xt[w]^=v;
- if(v>>h&)std::swap(ch[w][],ch[w][]);
- }
- }
- void dn(int w,int h){
- if(xt[w]){
- tag(ch[w][],h-,xt[w]);
- tag(ch[w][],h-,xt[w]);
- xt[w]=;
- }
- }
- int mex(int w){
- int s=;
- for(int i=,d;~i;--i){
- dn(w,i);
- if(sz[ch[w][]]==(<<i))w=ch[w][],s|=<<i;
- else w=ch[w][];
- }
- return s;
- }
- int build(int x){
- int rt=++p,w;
- sz[w=rt]=;
- for(int i=;~i;--i)sz[w=ch[w][x>>i&]=++p]=;
- return rt;
- }
- int merge(int a,int b,int h){
- if(!a||!b)return a|b;
- dn(a,h);dn(b,h);
- ch[a][]=merge(ch[a][],ch[b][],h-);
- ch[a][]=merge(ch[a][],ch[b][],h-);
- sz[a]=h>=?sz[ch[a][]]+sz[ch[a][]]:;
- return a;
- }
- void dfs(int w,int pa){
- ed[w]=;
- int x=;
- for(int i=e0[w],u;i;i=enx[i]){
- u=es[i];
- if(u!=pa){
- dfs(u,w);
- x^=f[u];
- }
- }
- for(int i=e0[w],u;i;i=enx[i]){
- u=es[i];
- if(u!=pa){
- tag(rt[u],,x);
- rt[w]=merge(rt[w],rt[u],);
- }
- }
- rt[w]=merge(rt[w],build(x),);
- f[w]=mex(rt[w]);
- tag(rt[w],,f[w]);
- }
- int _(){
- int x=,c=getchar();
- while(c<)c=getchar();
- while(c>)x=x*+c-,c=getchar();
- return x;
- }
- int main(){
- for(T=_();T;--T){
- if(p){
- memset(ch,,sizeof(ch[])*(p+));
- memset(sz,,sizeof(int)*(p+));
- memset(xt,,sizeof(int)*(p+));
- p=;
- }
- n=_();m=_();
- for(int i=;i<=n;++i)e0[i]=ed[i]=f[i]=rt[i]=;
- ep=;
- for(int i=,a,b,c;i<m;++i){
- a=_();b=_();
- es[ep]=b;enx[ep]=e0[a];e0[a]=ep++;
- es[ep]=a;enx[ep]=e0[b];e0[b]=ep++;
- }
- for(int i=;i<=n;++i)if(!ed[i]){
- dfs(i,);
- f[]^=f[i];
- }
- puts(f[]?"Alice":"Bob");
- }
- return ;
- }
bzoj4730: Alice和Bob又在玩游戏的更多相关文章
- [UOJ266]Alice和Bob又在玩游戏
[UOJ266]Alice和Bob又在玩游戏 Tags:题解 作业部落 评论地址 TAG:博弈 题意 不同于树的删边游戏,删掉一个点删去的是到根的路径 题解 这题只和计算\(SG\)有关,博弈的有关内 ...
- UOJ #266 【清华集训2016】 Alice和Bob又在玩游戏
题目链接:Alice和Bob又在玩游戏 这道题就是一个很显然的公平游戏. 首先\(O(n^2)\)的算法非常好写.暴力枚举每个后继计算\(mex\)即可.注意计算后继的时候可以直接从父亲转移过来,没必 ...
- uoj266[清华集训2016]Alice和Bob又在玩游戏(SG函数)
uoj266[清华集训2016]Alice和Bob又在玩游戏(SG函数) uoj 题解时间 考虑如何求出每棵树(子树)的 $ SG $ . 众所周知一个状态的 $ SG $ 是其后继的 $ mex $ ...
- [BZOJ4730][清华集训2016][UOJ266] Alice和Bob又在玩游戏
题意:俩智障又在玩游戏.规则如下: 给定n个点,m条无向边(m<=n-1),保证无环,对于每一个联通块,编号最小的为它们的根(也就是形成了一片这样的森林),每次可以选择一个点,将其本身与其祖先全 ...
- 【bzoj4730】 Alice和Bob又在玩游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=4730 (题目链接) 题意 给出一个森林,两个人轮流操作,每次把一个节点以及它的祖先全部抹去,无节点可 ...
- uoj#266. 【清华集训2016】Alice和Bob又在玩游戏(博弈论)
传送门 完了我连sg函数是个啥都快忘了 设\(sg[u]\)为以\(u\)为根节点的子树的\(sg\)函数值,\(rem[u]\)表示\(u\)到根节点的路径删掉之后剩下的游戏的异或值 根节点\(u\ ...
- UOJ 266 - 【清华集训2016】Alice和Bob又在玩游戏(SG 定理+01-trie)
题面传送门 神仙题. 首先注意到此题的游戏是一个 ICG,故考虑使用 SG 定理解决这个题,显然我们只需对每个连通块计算一遍其 SG 值异或起来检验是否非零即可.注意到我们每删除一个点到根节点的路径后 ...
- UOJ#266. 【清华集训2016】Alice和Bob又在玩游戏 博弈,DSU on Tree,Trie
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ266.html 题解 首先我们可以直接暴力 $O(n^2)$ 用 sg 函数来算答案. 对于一个树就是枚举 ...
- 【清华集训2016】Alice和Bob又在玩游戏
不难的题目.因为SG性质,所以只需要对一棵树求出. 然后如果发现从上往下DP不太行,所以从下往上DP. 考虑一个点对子树的合并,考虑下一个删的点在哪一个子树,那么剩下的状态实际上就是把一个子树所有能达 ...
随机推荐
- htop基本使用
一.什么是htop? top是所有类unix系统的必备工具,能直观方便的查看到系统负载.内存及进程等信息. 而htop具有top工具的全部功能且还新增了一些额外的功能和使用体验改进.与top相比,其具 ...
- public/private/protected访问控制权限的区别
//public/private/protected访问控制权限的区别//时间:2016/8/16 //(一)修饰成员: //public: 在类内.类外都能使用 . //protected: 在类内 ...
- myeclipse打war包时,报错security alert integrity check error
今天在用myeclipse打包项目时,出现如下图的提示: 在网上查找了一下原因,主要是由于Jar包不符合所导致的.解决办法如下: 将com.genuitec.eclipse.export.wizard ...
- mysql常用操作
一.什么是数据库 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. SQL( Structured Query Language)语言的全称是结构化查询语言.数据库管理系统通过S ...
- 玩转github----1
1.svn和github的区别 svn:集成式:我们在多人开发一个项目的时候我们需要准备一个中央服务器,然后每一个人都要通过这个中央服务器进行代码的一个获取和代码的一个提交,所以说这个所有的版本控制和 ...
- 今天网站后台登录页面需要生成一个二维码,然后在手机app上扫描这个二维码,实现网站登录的效果及其解决方案如下
要实现二维码登录,需要解决2个技术,1.需要js websocket 与后台php实现长连接技术 2.实现二维码生成技术 要实现这个功能第二个算是比较简单,只需要下载一个php的二维码生成器即可,但要 ...
- install google chrome
32bit: wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb sudo dpkg -i go ...
- ASP.NET Razor——ASP.NET Razor - C#代码语法
Razor 同时支持 C# (C sharp) 和 VB (Visual Basic). 主要的 Razor C# 语法规则 Razor 代码块包含在 @{ ... } 中 内联表达式(变量和函数)以 ...
- WindowsAPI开发常用资料
主类 子类 功能 Win32API SHGetSpecialFolderLocation 获取系统特殊文件夹路径(SHGetSpecialFolderLocation) 通过 SHGetSpecial ...
- 修复FreeBSD上的ufs文件系统
昨天在两台FreeBSD上配置好Heartbeat服务(两台机器是用网线连通的,做为Heartbeat的两个节点),启动服务时Heartbeat检测到crmd守护进程没起来,于是它就尝试重启两台机器以 ...