MUV LUV UNLIMITED

Link

题目大意:给出一棵树,两人轮流任取(至少取一)当前树上的叶子,最先不能操作的人输。

首先考虑一个情况,若一个叶子节点 x x x 有兄弟,则先手必胜。因为如果我取了 x x x 以后的树是先手必败态,那么我取这个叶子就必胜了。如果不是,则取完 x x x 之后到达了先手必胜态,那么此时第二个人取一次之后肯定又变为了先手必败态,假设第二个人取的点集为 s s s ,也就是说取了 { x } ∪ S \{x\}∪S {x}∪S 之后变为了先手必败态,而我们现在得知 x x x 有兄弟,也就是说取完 x x x 之后不会产生新的叶子节点,所以第一个人也可以选择再取 s s s ,也就是说先手可以直接取完 { x } ∪ S \{x\}∪S {x}∪S ,这样先手又赢了。所以只要叶子节点有兄弟,就先手必胜。

那么现在我们考虑每个叶子节点都没兄弟的情况 ,那么假如全局没有分叉点,那么显然这颗树就是一条链,则如果是点数为偶数的话先手必败。那么假如我们现在定义分叉链的长度为一个叶子向上遇到的第一个分叉点(最近的 儿子数量大于 1 1 1 的 祖先)的距离。那么如果所有分叉链长度都为偶数的话,后手只要每次都跟着先手做一样的操作,那么每次先手遇到的都是全偶链,所以后面只要是有奇链,一定是后手遇见的,所以,如下这种情况, 一定后手遇见的(图中三角形代表的子树非空):

那么我们一开始就分析过,一个叶子节点如果有兄弟,那么其是必胜态,然而一定是后手先遇见这个状态,所以此时后手必胜。反之只要存在一个奇数链,先手只要第一次把奇数链都取一个,就能将将全偶状态转移给了后手,这样后手就变成了必败态。

所以,综上所述,只要某个叶子节点有兄弟则先手必胜,否则若存在奇数长度的分叉链先手必胜,不存在则后手必胜。

#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int out[N], fa[N];int main() {#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);
#endifint T;scanf("%d", &T);while(T--) {int n; scanf("%d", &n);for (int i = 1; i <= n; ++i) {fa[i] = out[i] = 0;}for (int i = 2; i <= n; ++i) {int x; scanf("%d", &x);fa[i] = x;out[x]++;}bool fir = false;for (int i = 1; i <= n; ++i) {if (!out[i]) {if (out[fa[i]] > 1) {fir = true;break;}int cnt = 0;int u = fa[i];while(1) {cnt++;if (out[u] > 1 || u == 0) break;u = fa[u];}if (cnt & 1) {fir = true;break;}}}if (fir) {puts("Takeru");}else {puts("Meiya");}}
}

2019 China Collegiate Programming Contest Qinhuangdao K. MUV LUV UNLIMITED相关推荐

  1. 2019 China Collegiate Programming Contest Qinhuangdao Onsite F. Forest Program

    2019 China Collegiate Programming Contest Qinhuangdao Onsite F. Forest Program 题目链接 The kingdom of Z ...

  2. 【Virtual Judge】The 2019 China Collegiate Programming Contest Harbin Site-Keeping Rabbits

    Keeping Rabbits DreamGrid is the keeper of n rabbits. Initially, the i-th (1≤i≤n) rabbit has a weigh ...

  3. 2020 China Collegiate Programming Contest Qinhuangdao Site 补题部分

    已经补AEFGK E. Exam Results 枚举+二分+动态开点权值线段树O(nlogN)O(nlogN)O(nlogN) 智商太低,想不到什么贪心只能暴力数据结构维护 对于所有学生的最高成绩只 ...

  4. acm-(辗转相除法、丢番图方程)2020 China Collegiate Programming Contest Qinhuangdao Site I. Interstellar Hunter

    传送门 本题其实就是给定若干个整数向量(x1,y1),(x2,y2),...,(xn,yn)(x_1,y_1),(x_2,y_2),...,(x_n,y_n)(x1​,y1​),(x2​,y2​),. ...

  5. 2016 China Collegiate Programming Contest Final

    2016 China Collegiate Programming Contest Final Table of Contents 2016 China Collegiate Programming ...

  6. K. MUV LUV UNLIMITED(树上博弈)

    原题链接:K. MUV LUV UNLIMITED 题意: 给你一棵 n 个点以 1 为根的有根树.现在有两个人轮流操作,每次操作人可以选出至少1个叶子(没有儿子的点)删掉,无法操作的人失败.二者都是 ...

  7. 2019CCPC秦皇岛 K MUV LUV UNLIMITED(博弈)

    MUV LUV UNLIMITED Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  8. acm -(并查集、启发式合并、gcd、枚举因子)2020 China Collegiate Programming Contest Changchun Onsite K. Ragdoll

    传送门 本题考虑直接对每个iii求出所有满足ij=gcd(i,j)i^j=gcd(i,j)ij=gcd(i,j)的jjj,然后存在ggg数组中,对于查询修改操作维护一个并查集即可,合并的时候采用启发式 ...

  9. 2020 China Collegiate Programming Contest Weihai Site补题部分

    A. Golden Spirit 签到题,首先把所有老人带到对岸,然后在对休息讨论一下即可. #define IO ios::sync_with_stdio(false);cin.tie();cout ...

最新文章

  1. 前端月趋势榜:5 月最热门的 20 个前端开源项目 - 2105
  2. 捷信达登录信息代码133_报名!广州40所热门民办初中学费均价38678,有学校涨幅133%...
  3. manifest.mf._MANIFEST.MF和feature.xml版本控制规则
  4. mysqld命令相关介绍
  5. SAP-R3被取代,苏宁采购平台的升级和架构演进之路
  6. 4月份全球新注册39.2万辆电动汽车 榜首并非Model 3
  7. Eureka 配置参数说明
  8. bootstrap49-Bootstrap 分割的按钮下拉菜单
  9. Activity传递数据
  10. ubantu 安装anaconad_Ubuntu16.04安装Anaconda (转)
  11. 计算机二进制源于古代,二进制源于道德经?
  12. 企业工商数据-------大数据时代下的营销利器
  13. 常用运算放大器 - 选型列表(比较全,参数详细)
  14. Qt模仿网易云黑胶片转动动画
  15. css页脚怎么居中,无法使我的页脚内容居中
  16. AVD安装XPOSED环境
  17. 第4讲:C# 入门教程 入门知识(黄菊华NET网站开发、C#网站开发、Razor网站开发教程)
  18. dos(cmd)命令
  19. innodb_flush_method 的理解
  20. 如何实现微信和淘宝的扫码登录 ?

热门文章

  1. 斯坦福大学计算机专业培养方案剖析
  2. 51job前程无忧网站打不开,51job网站进不了,51job打不开
  3. c语言norm函数的作用,带有示例的C ++中的norm()函数
  4. 全屏或者退出全屏检测
  5. 【项目实战】select+input实现下拉框左右选择+模糊查询功能
  6. 十进制转化为八进制和十六进制
  7. rust种的南瓜为什么老是消失_冷门英雄就一定没用?亚瑟王、南瓜表示不服
  8. Gradient Boosting算法
  9. 安全专家:真实的网络***取证纪实
  10. AI当自强:独家揭秘旷视自研人工智能算法平台Brain++