ABC 199 E - Permutation
dp[S]:=集合Sに含まれる整数を数列の先頭∣S∣箇所に(制約を満たすように)配置する場合の数、としてDPできる。Sに整数tを追加してS∪{t}に遷移する時、制約はXi=∣S∣+1であるようなものだけ調べればよい。
また、状態を入れ換えてdp[S]:=集合Sに含まれる位置に整数1,2,...,∣S∣を配置する場合の数、としてもDPできる。この場合は∣S∣に位置tを追加してS∪{t}に遷移する時、制約はYi=∣S∣+1であるようなものだけ調べればよい。
前者と後者は同じ形の遷移になっていて、一方を書いて入力のXとYの順番を「間違える」ともう一方になって同じ答えがでる。これらの数えているものは、数列を置換とみなしたときに逆置換で一対一対応している。