AtCoder Grand Contest 017D (AGC017D) Game on Tree 博弈
原文链接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 博弈相关推荐
- Atcoder Grand Contest 026 (AGC026) F - Manju Game 博弈,动态规划
原文链接www.cnblogs.com/zhouzhendong/AGC026F.html 前言 太久没有发博客了,前来水一发. 题解 不妨设先手是 A,后手是 B.定义 \(i\) 为奇数时,\(a ...
- AtCoder Grand Contest 017
AtCoder Grand Contest 017 A - Biscuits 有\(n\)个数,问有多少个集合的数的和模\(2\)余\(P\). 随便\(dp\)一下就好了. #include< ...
- 【每日亿题#12】AtCoder Grand Contest 021 (A ~ F)全部题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 AtCoder Grand Contest 021 题解 A. Digit Sum 2 B. ...
- AtCoder Grand Contest 008: Contiguous Repainting(思维)
Contiguous Repainting 时间限制: 2 Sec 内存限制: 256 MB 提交: 69 解决: 22 [提交][状态][讨论版][命题人:admin] 题目描述 There a ...
- AtCoder题解——AtCoder Grand Contest 048——A - atcoder < S
题目相关 题目链接 AtCoder Grand Contest 048 A 题,https://atcoder.jp/contests/agc048/tasks/agc048_a. Problem S ...
- AtCoder题解 —— AtCoder Grand Contest 050 —— B - Three Coins —— 动态规划
题目相关 题目链接 AtCoder Grand Contest 050 B 题,https://atcoder.jp/contests/agc050/tasks/agc050_b. Problem S ...
- [AtCoder Grand Contest 048] D - Pocky Game(区间dp + 博弈)
problem AtCoder solution 注意:本题不是平等博弈,因为先手只能取最左边,后手只能取最右边. 设 f[l][r][k]:f[l][r][k]:f[l][r][k]: 只剩下区间 ...
- Atcoder Grand Contest 010 B - Boxes 差分
B - Boxes 题目连接: http://agc010.contest.atcoder.jp/tasks/agc010_b Description There are N boxes arrang ...
- AtCoder Grand Contest 010 D - Decrementing
题目传送门:https://agc010.contest.atcoder.jp/tasks/agc010_d 题目大意: 有\(n\)个数\(A_i\),它们的\(gcd\)是1,A.B两人轮流操作, ...
- Atcoder Grand Contest 012 B - Splatter Painting解题报告
题目:http://agc012.contest.atcoder.jp/tasks/agc012_b 有一个n点m边的图,(不一定联通) 还有q个操作:每次将一个点v及其周围距离<=d的点涂成颜 ...
最新文章
- 美团确定进军自动驾驶,滴滴如何应对?
- 二叉树的前序中序后序递归查找,深度,广度搜索C++实现(VS2017)
- 火狐浏览器修改userAgent
- mysql中给用户添加密码_MySql中添加用户,新建数据库,用户授权,删除用户,修改密码...
- 使用Eclipse连接SAP云平台上的HANA数据库实例
- 自动补足算法是什么_数据、算法岗的几点经验分享!
- 单片机小精灵t2_搭建S5P4418 ARM环境下 GPU OPENGL ES开发环境(适用 NANOPI2,3,M2,M3,T2,T3)...
- ajax上传文件报404_FTP上传文件需要注意哪些事项
- 给安利公司董事长郑李锦芬女士的一封信
- 我就是一根儿筋 也许问题很简单
- Leetcode题解(十九)
- access 链接mysql数据库教程_ACCESS实例教程(数据库的编程)
- hibernate无法自动建表:ERROR: HHH000388
- 浅谈认识商业智能过程中遇到的困难
- android 陀螺仪简单使用,判读手机是否静止状态
- 各种接口资源整合(持续更新)
- ubuntu10.04安装有线网卡驱动
- RK平台--EVS模块: (一)概述
- CodeKK源码地址
- 如来问:“你们带U盘了么”