原文链接https://www.cnblogs.com/zhouzhendong/p/AGC017D.html

题目传送门 - AGC017D

题意

  给定一棵 n 个节点的以节点 1 为根的树。

  两个人在博弈,每次可以删除任意一个子树,不能删掉整个树。最终不能操作的人输。

  问先手是否必胜。

  $n\leq 10^5$

题解

  考虑处理出每一个节点的 SG 值。

  对于节点 x ,显然他的所有子树都是独立的,我们只需要求出所有子树的 SG 值然后异或起来就好了。

  假设 y 为 x 的一个儿子,则节点 y 对于 x 的贡献是什么呢?

  显然不是 SG[y] ,因为 x 到 y 还有一条边。在 y 子树中操作的任何时候都可以直接删除这条边到达状态 0 ,相当于 y 子树的所有状态都连了一条到 0 的边。

  所以 SG'[y] = SG[y] + 1 。

  所以 SG[x] 就是所有的 SG'[y] 的异或值(其中 y 为 x 的儿子)。

代码

#include <bits/stdc++.h>
#define y1 __zzd001
using namespace std;
typedef long long LL;
LL read(){LL x=0;char ch=getchar();while (!isdigit(ch))ch=getchar();while (isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return x;
}
const int N=100005;
int n,sg[N];
vector <int> e[N];
void solve(int x,int pre){sg[x]=0;for (auto y : e[x])if (y!=pre){solve(y,x);sg[x]^=sg[y]+1;}
}
int main(){n=read();for (int i=1;i<n;i++){int x=read(),y=read();e[x].push_back(y);e[y].push_back(x);}solve(1,0);puts(sg[1]?"Alice":"Bob");return 0;
}

  

转载于:https://www.cnblogs.com/zhouzhendong/p/AGC017D.html

AtCoder Grand Contest 017D (AGC017D) Game on Tree 博弈相关推荐

  1. Atcoder Grand Contest 026 (AGC026) F - Manju Game 博弈,动态规划

    原文链接www.cnblogs.com/zhouzhendong/AGC026F.html 前言 太久没有发博客了,前来水一发. 题解 不妨设先手是 A,后手是 B.定义 \(i\) 为奇数时,\(a ...

  2. AtCoder Grand Contest 017

    AtCoder Grand Contest 017 A - Biscuits 有\(n\)个数,问有多少个集合的数的和模\(2\)余\(P\). 随便\(dp\)一下就好了. #include< ...

  3. 【每日亿题#12】AtCoder Grand Contest 021 (A ~ F)全部题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 AtCoder Grand Contest 021 题解 A. Digit Sum 2 B. ...

  4. AtCoder Grand Contest 008: Contiguous Repainting(思维)

    Contiguous Repainting 时间限制: 2 Sec  内存限制: 256 MB 提交: 69  解决: 22 [提交][状态][讨论版][命题人:admin] 题目描述 There a ...

  5. AtCoder题解——AtCoder Grand Contest 048——A - atcoder < S

    题目相关 题目链接 AtCoder Grand Contest 048 A 题,https://atcoder.jp/contests/agc048/tasks/agc048_a. Problem S ...

  6. AtCoder题解 —— AtCoder Grand Contest 050 —— B - Three Coins —— 动态规划

    题目相关 题目链接 AtCoder Grand Contest 050 B 题,https://atcoder.jp/contests/agc050/tasks/agc050_b. Problem S ...

  7. [AtCoder Grand Contest 048] D - Pocky Game(区间dp + 博弈)

    problem AtCoder solution 注意:本题不是平等博弈,因为先手只能取最左边,后手只能取最右边. 设 f[l][r][k]:f[l][r][k]:f[l][r][k]: 只剩下区间 ...

  8. Atcoder Grand Contest 010 B - Boxes 差分

    B - Boxes 题目连接: http://agc010.contest.atcoder.jp/tasks/agc010_b Description There are N boxes arrang ...

  9. AtCoder Grand Contest 010 D - Decrementing

    题目传送门:https://agc010.contest.atcoder.jp/tasks/agc010_d 题目大意: 有\(n\)个数\(A_i\),它们的\(gcd\)是1,A.B两人轮流操作, ...

  10. Atcoder Grand Contest 012 B - Splatter Painting解题报告

    题目:http://agc012.contest.atcoder.jp/tasks/agc012_b 有一个n点m边的图,(不一定联通) 还有q个操作:每次将一个点v及其周围距离<=d的点涂成颜 ...

最新文章

  1. 美团确定进军自动驾驶,滴滴如何应对?
  2. 二叉树的前序中序后序递归查找,深度,广度搜索C++实现(VS2017)
  3. 火狐浏览器修改userAgent
  4. mysql中给用户添加密码_MySql中添加用户,新建数据库,用户授权,删除用户,修改密码...
  5. 使用Eclipse连接SAP云平台上的HANA数据库实例
  6. 自动补足算法是什么_数据、算法岗的几点经验分享!
  7. 单片机小精灵t2_搭建S5P4418 ARM环境下 GPU OPENGL ES开发环境(适用 NANOPI2,3,M2,M3,T2,T3)...
  8. ajax上传文件报404_FTP上传文件需要注意哪些事项
  9. 给安利公司董事长郑李锦芬女士的一封信
  10. 我就是一根儿筋 也许问题很简单
  11. Leetcode题解(十九)
  12. access 链接mysql数据库教程_ACCESS实例教程(数据库的编程)
  13. hibernate无法自动建表:ERROR: HHH000388
  14. 浅谈认识商业智能过程中遇到的困难
  15. android 陀螺仪简单使用,判读手机是否静止状态
  16. 各种接口资源整合(持续更新)
  17. ubuntu10.04安装有线网卡驱动
  18. RK平台--EVS模块: (一)概述
  19. CodeKK源码地址
  20. 如来问:“你们带U盘了么”

热门文章

  1. 网站安全之密码明文传输漏洞
  2. 强化学习实战(七)【Windows安装星际争霸Ⅰ 强化学习环境教程】
  3. HDU 4455 Substrings(线性dp,很有意思)
  4. 软件开发知识体系(一)
  5. 关于惠普hp服务器开机时F10菜单变成F10 Function Disabled的解决方法
  6. C++标准库bitset类型(简单使用方法)
  7. 设置eclipse中的字体大小
  8. Wannafly挑战赛28
  9. 天气预报APP(1)
  10. C#属性(Attribute)用法实例解析