競技プログラミング用 知識集積所

ABC418D - XNOR Operation

最終更新:

sport_programming

- view
管理者のみ編集可


問題


必要知識

B以下レベルの内容は省略

考え方

通常のXORであれば、Sの中の1の個数が奇数ならば1、偶数個であれば0になる。
NXORはその0と1の立場が逆になる。
つまり、Sの中の0の個数が奇数ならば0、偶数個であれば1になる。
ということで、問題は実は「0の個数が偶数である部分文字列はいくつあるか?」である。

これは動的計画法で求められる。
つまり、
  • その文字で終わる、0が偶数個の文字列の数
  • その文字で終わる、0が奇数個の文字列の数
を順に求めていき、偶数個の方の総和が答え。

解答例


注意点

答えがint型に入らない場合がある

全部oで最大文字数用意されると、答えは10^10くらいまでありうる。
long long型を用意しておくこと。

別解

タグ:

動的計画法
ウィキ募集バナー