CF2002 D1/2

zzafanti發表於2024-08-12

CF2002 D1/2

題意描述

給定一棵有根樹和一個排列。每次操作交換排列裡兩個數,每次操作後回答這是否是一個合法的 DFS 序列。

做法

考慮排列裡相鄰兩個數 \((a,b)\),如果 \(a\)\(b\) 的父親,貢獻為 1;如果 \(a\)\(b\) 的父親的子樹內,貢獻也為 1。其他情況貢獻為 0。

容易發現,當總貢獻為 \(n-1\) 的時候,這是個合法的 DFS 序列。

可以 \(O(n+q)\) 維護。

相關文章