2021年4月24日土曜日

ABC 199 E - Permutation

ABC 199 E - Permutation

dp[S]:=\operatorname{dp}[S] :=集合SSに含まれる整数を数列の先頭S|S|箇所に(制約を満たすように)配置する場合の数、としてDPできる。SSに整数ttを追加してS{t}S \cup \{t\}に遷移する時、制約はXi=S+1X_i=|S|+1であるようなものだけ調べればよい。

また、状態を入れ換えてdp[S]:=\operatorname{dp}[S] :=集合SSに含まれる位置に整数1,2,...,S1, 2, ..., |S|を配置する場合の数、としてもDPできる。この場合はS|S|に位置ttを追加してS{t}S \cup \{t\}に遷移する時、制約はYi=S+1Y_i = |S|+1であるようなものだけ調べればよい。

前者と後者は同じ形の遷移になっていて、一方を書いて入力のXXYYの順番を「間違える」ともう一方になって同じ答えがでる。これらの数えているものは、数列を置換とみなしたときに逆置換で一対一対応している。