E

首先注意到这个问题事实上非常复杂(两棵树上博弈),基础的转化无效,于是考虑简化情形。

手玩很多样例可以发现,似乎很容易出现无限循环的情况,进一步地,有观察:

  • 若第一棵树上存在相邻点 \(u, v\) 在第二棵树上距离 \(> 2\),那么只要走到 \(u, v\) 其中一个点先手一定存在策略能够无限循环下去。

显然走到哪个点是对称的,不妨假设走到 \(u\)。

那么先手可以在后手走到 \(u\) 在第二棵树上相邻点时移动到 \(v\),由于树上路径唯一,后手不可能在一次操作内移动到 \(v\)。

借此,我们将满足上述情形的点对称作关键点,它们的连边称作关键边。

注意到我们不需要考虑关键边(因为走了关键边必定在此之前走到了关键点),于是我们将关键边全部删去,第一棵树变为森林,此时问题转化为:

  • 先手从 \(X\) 开始走,走到关键点赢,后手从 \(Y\) 开始追赶 \(X\) 碰到了后手赢(先手无法赢的时候尽可能最大化步数,后手尽可能最小化步数)。确定双方谁赢并且在后手赢的时候输出最大步数。

由于此时第一棵树上的连边在第二棵树上距离 \(\le 2\),因此考虑以第二棵树为主树将第一棵树在其上连虚边(这样方便观察)。

此时貌似仍然没有头绪,考虑 弱化问题:所有第一棵树上连边在第二棵树上距离 \(=1\)。

此时显然有如下观察(证明不难):

  • 后手每次的最优策略一定是向先手方向移动。
  • 先手的最优策略一定是走到一个不会在路径过程中被后手撞到的(最远)位置然后乖乖等死,或找到一个不会在路径过程中被后手撞到的关键点(优先)。

对于后者,不难发现这些位置 \(u\) 满足:\(dis_{X, u} < dis_{Y, u}\)。

充分性显然,必要性可以考虑先手的最优策略。

那么找到满足上述条件点中 \(dis_{Y, u}\) 的最大值即可,答案就是其的两倍。

回到原问题,我们做类似的观察可以发现先手后手的最优策略与弱化问题一致!

我们容易证明:先手在与后手距离 \(\le 2\) 的时候最优策略是远离先手 / 不动(无路可走)。

因此可以证明先手的最优策略。

而后手的最优策略显然是先手最优策略下的答案上界。

因此只需要找到可行点的判定条件即可。

不难发现,此时一个点可行当且仅当:

  • 其在第一棵树上的所有祖先(以 \(X\) 为根)\(u\)(包含其本身)满足:\(disA_{X, u} < disB_{Y, u}\)

充分性考虑归纳证明。

必要性容易通过先手在与后手距离 \(\le 2\) 的时的必胜策略证明(先手不会在 \(\ge\) 的位置继续向后手靠近)

于是直接找到上述的可行点判定先手是否赢 / 后手赢情况下的最多次数即可。

复杂度 \(\mathcal{O}(n \log n)\),瓶颈在于求树上两点距离,当然本题中只需要判定距离是否 \(\le 2\),于是可以容易优化至 \(\mathcal{O}(n)\),但没太大必要。

AGC005 部分简要题解的更多相关文章

  1. Noip 2014酱油记+简要题解

    好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...

  2. Tsinghua 2018 DSA PA2简要题解

    反正没时间写,先把简要题解(嘴巴A题)都给他写了记录一下. upd:任务倒是完成了,我也自闭了. CST2018 2-1 Meteorites: 乘法版的石子合并,堆 + 高精度. 写起来有点烦貌似. ...

  3. Codeforces 863 简要题解

    文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 简要题解?因为最后一题太毒不想写了所以其实是部分题解... A题 传送门 题意简述:给你一个数,问你能不能通过加前导000使其成为一个回文数 ...

  4. HNOI2018简要题解

    HNOI2018简要题解 D1T1 寻宝游戏 题意 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为 ...

  5. JXOI2018简要题解

    JXOI2018简要题解 T1 排序问题 题意 九条可怜是一个热爱思考的女孩子. 九条可怜最近正在研究各种排序的性质,她发现了一种很有趣的排序方法: Gobo sort ! Gobo sort 的算法 ...

  6. BJOI2018简要题解

    BJOI2018简要题解 D1T1 二进制 题意 pupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是 \(3\) 的倍数.他想研究对于二进制,是否也有类似的性质. 于是他生 ...

  7. CQOI2018简要题解

    CQOI2018简要题解 D1T1 破解 D-H 协议 题意 Diffie-Hellman 密钥交换协议是一种简单有效的密钥交换方法.它可以让通讯双方在没有事先约定密钥(密码)的情况下,通过不安全的信 ...

  8. AtCoder ExaWizards 2019 简要题解

    AtCoder ExaWizards 2019 简要题解 Tags:题解 link:https://atcoder.jp/contests/exawizards2019 很水的一场ARC啊,随随便便就 ...

  9. Comet OJ - Contest #2 简要题解

    Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...

随机推荐

  1. 基于MCRA-OMLSA的语音降噪(二):实现

    上篇文章(基于MCRA-OMLSA的语音降噪(一):原理)讲了基于MCRA-OMLSA降噪的原理,本篇讲怎么做软件实现.软件实现有多种方式.单纯看降噪效果可用python,因为python有丰富的库可 ...

  2. <数据结构>hash进阶

    hash函数构建 采取26进制 对于字符串str,令**H[i] = H[i-1]*26 + index(str[i]) **,最后H[i-1]就是str的hash值 问题:hash值过大,无法表式 ...

  3. playwright--自动化(一):快速上手

    Playwright为现代 Web 应用程序提供可靠的端到端测试. 在JavaScript 和 TypeScript.Python..NET和Java 中都可以使用 Playwright 本人选择py ...

  4. windows环境下node安装教程(超详细)

    安装node.js 1.下载node: 下载地址:http://nodejs.cn/download/ node.js的zip包安装时是直接解压缩后就可以了, node.js的msi包是傻瓜式一路ne ...

  5. unittest+ddt_实现数据驱动测试(7)

    我们设计测试用例时,会出现测试步骤一样,只是其中的测试数据有变化的情况,比如测试登录时的账号密码.这个时候,如果我们依然使用一条case一个方法的话,会出现大量的代码冗余,而且效率也会大大降低.此时, ...

  6. unittest_skip跳过用例执行(3)

    在执行测试用例时,有时候有些用例是不需要执行的,比如版本迭代用例弃用,测试周期短只需要执行优先级高的用例,那我们怎么办呢?难道删除这些用例?那下次执行时如果又需要执行这些用例时,又把它补回来?这样操作 ...

  7. git报错 error: cannot stat 'file': Permission denied

    切换分支(git checkout xxx)时报错: error: cannot stat 'file': Permission denied 解决方法:退出编辑器.浏览器.资源管理器等,然后再切换就 ...

  8. Linux上天之路(十二)之服务管理

    主要内容 服务介绍 独立服务 非独立服务 1. 服务介绍 服务:常驻在内存中的程序,且可以提供一些系统或网络功能,那就是服务. 计算机中的系统服务有很多,比如: apache提供web服务 ftp提供 ...

  9. HarmonyOS新能力让数据多端协同更便捷,数据跨端迁移更高效!

    作者:yijian,终端OS分布式文件系统专家:gongashi,终端OS分布式数据管理专家 HarmonyOS作为分布式操作系统,其分布式数据管理能力非常重要.我们也一直围绕持续为开发者带来全局&q ...

  10. 彻彻底底地理解TCP三次握手和四次挥手的全部过程

    三次握手 我们先提出一些问题,但是我们暂且不回答这些问题,下面我会尽我所能详尽地讲解TCP的三次握手过程,然后看完你可以在评论区留下你对问题的答案,我们可以一起探讨. 为什么要握手 为什么是三次而不是 ...