Hewlaの競プロ記

競プロ記です。

Colorful Subsequence - AtCoder Grand Contest 031 A

AGC031-A, 200点でした。
問題リンク

解説

重要な点として、

  • 部分列は全て異なる文字からならねばならない
  • 文字列として同一でも、異なる位置から取り出された部分列は区別して数える

ということがあります。
僕は問題文の勘違いもあってかなり迷走しましたが、結局、

  • 各アルファベットは1回しか現れられない
  • 異なる位置にある同じアルファベットを選んだ文字列同士は区別して数えられる

ので、
例えば'a'がS中にk回現れたとすると、'a'については

  • 部分列に一つも含まれない
  • 部分列にi番目の'a'が含まれる(1 \leqq i \leqq k)

ので、'a'の選び方はk+1パターンあるわけです。

各アルファベットについて、(その個数+1の積)-1が答えになります。
(最後に-1する理由ですが、この方法だと全てのアルファベットが一つも部分列に含まれない場合、つまりからの文字列となる場合を1つだけ含むからです。)