CF2002 D1/2
CF2002 D1/2
题意描述
给定一棵有根树和一个排列。每次操作交换排列里两个数,每次操作后回答这是否是一个合法的 DFS 序列。
做法
考虑排列里相邻两个数 \((a,b)\),如果 \(a\) 是 \(b\) 的父亲,贡献为 1;如果 \(a\) 在 \(b\) 的父亲的子树内,贡献也为 1。其他情况贡献为 0。
容易发现,当总贡献为 \(n-1\) 的时候,这是个合法的 DFS 序列。
可以 \(O(n+q)\) 维护。
🍕🏠🌋 当前时间是:
给定一棵有根树和一个排列。每次操作交换排列里两个数,每次操作后回答这是否是一个合法的 DFS 序列。
考虑排列里相邻两个数 \((a,b)\),如果 \(a\) 是 \(b\) 的父亲,贡献为 1;如果 \(a\) 在 \(b\) 的父亲的子树内,贡献也为 1。其他情况贡献为 0。
容易发现,当总贡献为 \(n-1\) 的时候,这是个合法的 DFS 序列。
可以 \(O(n+q)\) 维护。
