题目链接

https://atcoder.jp/contests/agc033/tasks/agc033_c

题解

终于会做点最简单的博弈论了……
首先题目中操作的含义就是选定一个点,把所有不是这个点的叶子删掉(如果这个点不是叶子就删所有叶子)。
对于任何一棵点数不少于\(3\)的树,一定存在一个点(比如非叶子节点),使得对该点操作之后直径减少\(2\);同时一定存在一个点(比如直径的端点),使得对该点操作后直径减少\(1\);同时不存在任何一种操作使得直径发生其他的变化。因此这是一个Bash博弈的模型,答案与直径长度模\(3\)的值有关。
设直径长度(点数)为\(l\). 若\(l=1\)则先手必胜,\(l=2\)则后手必胜。后面就变成了刚才讨论的情况,因此当且仅当直径长度\(\mod 3=2\)时后手必胜。
时间复杂度\(O(n)\).

代码

#include<bits/stdc++.h>
#define llong long long
using namespace std;inline int read()
{int x = 0,f = 1; char ch = getchar();for(;!isdigit(ch);ch=getchar()) {if(ch=='-') f = -1;}for(; isdigit(ch);ch=getchar()) {x = x*10+ch-48;}return x*f;
}const int N = 2e5;
struct Edge
{int v,nxt;
} e[(N<<1)+3];
int fe[N+3];
int fa[N+3];
int len[N+3];
int n,en,mx;void addedge(int u,int v)
{en++; e[en].v = v;e[en].nxt = fe[u]; fe[u] = en;
}void dfs(int u)
{for(int i=fe[u]; i; i=e[i].nxt){int v = e[i].v; if(v==fa[u]) continue;fa[v] = u; dfs(v);mx = max(mx,len[u]+len[v]+1);len[u] = max(len[u],len[v]+1);}
}int main()
{scanf("%d",&n);for(int i=1; i<n; i++) {int u,v; scanf("%d%d",&u,&v); addedge(u,v); addedge(v,u);}dfs(1);if(mx%3==1) {puts("Second");}else {puts("First");}return 0;
}

AtCoder AGC033C Removing Coins (博弈论)相关推荐

  1. AtCoder AGC002E Candy Piles (博弈论)

    神仙题..表示自己智商不够想不到... 好几次读成最后拿的赢了,导致一直没看懂题解... 题目链接: https://atcoder.jp/contests/agc002/tasks/agc002_e ...

  2. [atcoder caddi2018]D.Harlequin——博弈论

    题目大意: 给定n堆石子,每一次可以从不同的堆中取1个石子或者不取,求最后的谁获胜. 思路: 一种状态E全部都是偶数,另外一种状态O即存在奇数. 不难发现最后的状态为E. 如果拿到了E不论怎么操作都会 ...

  3. 注定与众不同_没有原因的数据注定会使我们失败

    注定与众不同 In 2008 the World Economic Forum reported the beginning of a new age, that of big data. Enter ...

  4. 数据分析师入门_数据分析师入门基础指南

    数据分析师入门 Back in the summer of 2018, I was just starting my first internship as a Data Analyst. 早在201 ...

  5. 所在地区级别_在人所在的地方

    所在地区级别 I've spent more than three years trekking around the globe talking about CSS Grid Layout. Inv ...

  6. 穹顶灯打不出阴暗面_知更鸟的崛起为愤怒的交易者带来了阴暗面

    穹顶灯打不出阴暗面 By Robert Schmidt and Ben Bain 罗伯特·施密特(Robert Schmidt)和本·贝恩(Ben Bain) Robinhood Markets ha ...

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

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

  8. AtCoder AGC005E Sugigma: The Showdown (博弈论)

    题目链接 https://atcoder.jp/contests/agc005/tasks/agc005_e 题解 完了真的啥都不会了-- 首先,显然如果某条A树的边对应B树上的距离大于等于\(3\) ...

  9. 【做题记录】AtCoder AGC做题记录

    做一下AtCoder的AGC锻炼一下思维吧 目前已做题数: 127 总共题数: 269 每一场比赛后面的字母是做完的题,括号里是写完题解的题 AGC001: ABCDEF (DEF) AGC002: ...

最新文章

  1. 一文图解机器学习的基本算法!
  2. Python入门篇-functools
  3. 搜索引擎蜘蛛为什么对网站不爬行呢?
  4. JENKINS系统的安装部署
  5. iOS-常用的第三方框架的介绍
  6. Oracle常规恢复的实验测试
  7. 第三节 UNIX文件系统结构
  8. LM2596S DC-DC可调降压模块
  9. windows ping 端口
  10. android红米升级失败怎么办,红米刷机失败怎么办?解决红米刷机失败教程
  11. HTML5+CSS3基础响应式页面布局
  12. 石开kk高中计算机考试,石开KK电脑考试软件
  13. Django Views: Dynamic Content
  14. PTA 7-10 字符转换 (15分)
  15. NET开发邮件发送功能的全面教程(含邮件组件源码)(
  16. Android --- IjkPlayer 阅读native层源码之解码成功后的音频数据如何发送回Android播放(九)
  17. python DEA: 基于非径向距离NDDF的Malmquist-Luenberger 指数及其分解
  18. 《位置大数据隐私管理》—— 1.3 LBS中的个人隐私与挑战
  19. 打电话显示短信呼服务器,已启用短信呼服务 已启用短信呼服务是什么意思
  20. 插入排序基本思路与算法

热门文章

  1. 如何显示服务器上的图片,显示服务器上的图片怎么写
  2. bufferedreader读取中文乱码_python字符乱码的解决小结
  3. [scala-spark]7. list 与 map
  4. c8800 mp4设置
  5. 这些IT圈里的名词,你读对了吗
  6. GetCursorPos/WindowFromPoint/SendMessage
  7. Python学习之变量、对象和引用
  8. Keil Debug(printf) Viewer的使用
  9. 【vsftpd】嵌入式linux简易配置vsftpd服务
  10. BLE 安全之虫洞攻击