AT_arc169_a的题解
关于我在赛场上一题都没有切,后面自己推出来正解这件事~
题面翻译
给定一个长度为 \(N\) 的整数序列 \(A=( A_1, A_2,\cdots,A_N)\) 和另一个长度为 \(N-1\) 的整数序列 \(P=(P_2,\cdots,P_N)\)。注意 \(P\) 的索引从 \(2\) 开始。对于每个 \(i\),保证 \(1 \leq P_i < i\)。
现在您将重复下面的操作 \(10^{100}\) 次。
- 为每一个 \(i=2,\cdots,N\) 的值,\(A_{P_i}=A_{P_i}+A_i\)
确定当所有操作完成时,\(A_1\) 是正的、负的还是零。
题目想让你求什么
给你一棵以 \(1\) 为根的树,\(i\) 号点的父亲是 \(P_i\),点权是 \(A_i\),重复 \(10^{100}\) 次,从 \(1\sim N\) 分别将 \(i\) 号点的点权加进其父亲的点权。请判断 \(1\) 号点点权的正负性。
题目思路
我们发现,深度最深的点起决定性作用,因为无限次之后如果深度最深的点是负的,那么肯定能把深度较浅的点减成负的。如果深度最深的点是正的,那么肯定能把深度较浅的点加成正的。
所以,我们可以想到使用拓扑进行图的分层,求出每一层的和,在从下向上比较,当最底下一层的和为 \(0\) 时,该层对答案无影响,再看上面一层(可以把 \(1\) 号节点设为根)。
Code
尾声
感谢以为大佬告诉我这题可以用拓扑的思想,同时感谢martian148大佬为本篇题解提供写法上的参考。
__EOF__

本文作者:mgcjade
本文链接:https://www.cnblogs.com/mgcjade/p/17978467.html
关于博主:蒟蒻一枚,I AK IOI!(不可能的)
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/mgcjade/p/17978467.html
关于博主:蒟蒻一枚,I AK IOI!(不可能的)
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探