CF2002 D1/2
CF2002 D1/2
题意描述
给定一棵有根树和一个排列。每次操作交换排列里两个数,每次操作后回答这是否是一个合法的 DFS 序列。
做法
考虑排列里相邻两个数 \((a,b)\),如果 \(a\) 是 \(b\) 的父亲,贡献为 1;如果 \(a\) 在 \(b\) 的父亲的子树内,贡献也为 1。其他情况贡献为 0。
容易发现,当总贡献为 \(n-1\) 的时候,这是个合法的 DFS 序列。
可以 \(O(n+q)\) 维护。
o_o 当前时间是:
4:01:54 AM
给定一棵有根树和一个排列。每次操作交换排列里两个数,每次操作后回答这是否是一个合法的 DFS 序列。
考虑排列里相邻两个数 \((a,b)\),如果 \(a\) 是 \(b\) 的父亲,贡献为 1;如果 \(a\) 在 \(b\) 的父亲的子树内,贡献也为 1。其他情况贡献为 0。
容易发现,当总贡献为 \(n-1\) 的时候,这是个合法的 DFS 序列。
可以 \(O(n+q)\) 维护。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】