ICPC国内予選2020 D問題:icpca 文字

問題. Icpca 文字

 n 種類の相異なる英大文字からなる文字列  a_1 a_2 \ldots a_n と、式  S, T が与えられる。
 S, T は次の文法規則からなる。
 ・E  ::= F | '(' E '<' E ')' | '(' E '>' E ')'
 ・F  ::= a_1 |  a_2 |  \ldots |  a_n
ただし、不等式の評価は  a_i < a_j ならば  \min\{a_i, a_j\} a_i > a_j ならば  \max\{a_i, a_j\} とする。
 a_1 a_2 \ldots a_n 上の全順序のうち式  S T の値が等しくなるものの数を求めよ。

制約 1 \le n \le 16 0 \le |S|, |T| \le 100

解法.

 a_1 a_2 \ldots a_n 上の全順序は  n! 通りあるので全順序を全列挙して式  S, T を評価するという方針では間に合いません。そこで、式  S T の値が  a_i となる全順序が何通りあるのかを求めることを考えます。

下の式の構文木 a_i を A として考察します。A が式の値となるためには A となる葉の少なくともひとつが、その葉から根までの経路の評価で勝ち続ける必要があります。例えば NWEAS という全順序を考えたときには左にある A が勝ち続けるので、全順序 NWEAS に対する式の値は A となります。また、A よりも小さい要素を並び替えた WENAS や WNEAS なども式の値は A となります。

     f:id:tatanaideyo:20210924071302p:plain:w250

ここで、A よりも小さい要素と大きい要素の集合をそれぞれ  L, R とします(上の例では  L = \{N, W, E\}, R = \{S\})。 L, R 内の要素の順序が異なるどの全順序に対しても式の値が A となるかどうかは変わりません。なぜならば、式の値が A かどうかが変わるということは、A を葉とする頂点から根までの経路中に評価が反転する頂点があるということになります。しかし、木の高さによる帰納法から  L, R 内の要素の順序を変えただけでは評価が反転することがないことが分かります。
また、 L, R が固定されたときの式の値は  O(|L| + |R|) 時間で求めることができ、そのときの全順序の種類数は  |L|! \times |R|! となることが分かります。 L, R の選び方は  2^{n - 1} 通りあるので、各  a_i に対して  a_i よりも小さい要素と大きい集合を全探索して式の値を評価しても間に合います。


計算時間 O\left( n \, 2^{n - 1} \times (|S| + |T|)\right)

 

競プロから遠ざかっていたので大変だった。コンテスト時間内で解いている人スゴイな。