あとは、g(y)を求めるだけ。g(y)の値は、中央値がy以上の部分文字列の数を表す。数え上げまずは簡単な例外的な組合せから数えてみる。以下、解をanswerと表記する。どの友達もリュックに入れることができないならばanswer+=1。すべての友達をリュックに入れることができるならばanswer+=1。それ以外の場合を数える。023数え上げよい盤面である条件は、1<=i<=Nについてi行目とi列目が等しいことと同値。N=4については、以下が等しければよい。(A,B)と比較対象が同じであることがわかる。順列すべての順列を見ていくのは明らかに無理なので、a[j]ごとに計算していく。なるような順列を数える。その数えをg(j)としておく。読み上げられたカードの集合がTであるときのパターン数とする。パターン数の積とする。文字列sに含まれる文字xの数をn(x)とする。bだけから成り立つと考えてみよう。bをちょうどi個ずつ含む部分列の数とする。最後に残る要素の数をbとする。最終的にAの各要素はDの累乗になることがわかる。数え上げX[i]の値を具体的に求めていこう。各文字S[i]についてそれぞれX[i]を求める。S[i]がある回文に含まれる場合、S[i]と一致するようなもじS[j]がある。i=jでS[i=j]が奇数長回文の中心である場合も含む。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。