CODE FESTIVAL 2016 qual C E 順列辞書
問題
考察
まずは、部分問題を考えます。
の中に0が含まれない場合の答えを計算してみます。
これは、であることが確認できます。
そこで、一般の場合は、
各x,yに対し、
:となる順列の数
とおき、を計算すればよいです。
これだとO(N^2)ですが、さらにに注目して、
:なるjの数を全ての順列について足しあげたもの
とおいて、を計算すればよいです。
これで勝ったも同然で、が0か0でないかで4通りに場合分けし、それぞれきちきち計算すればは高速に計算できるので、答えが求まります。
実装は場合分けが多いのでやや大変でした・・・
感想
ひと月ほどまえ考えた際には歯が立たなかったのですが、いま考えたらすんなりいったのでよかったです。
まずは、0が含まれない場合を計算して、それらの和を別方向からみて足し上げるのが鍵でした。