結果
お客様の中に、D に嵌ってしまった黄色コーダーさんはいらっしゃいますか?
解法
A: 先頭の len(s) 文字を比較です。
B: min(a, k) - max(k-a-b, 0) です。
C: ビット全探索です。C に全探索を置くの、強い主張を感じざるをえません。
D: シュミレーションで、周期としっぽの長さを計算です。しっぽに属するときだけ 0-based index で出力して 3 WA です。(はい!?)
E: k 組以上 → ぴったり → 以下 のように、包除 2 回をします。なのですが、これでは 2 乗和になりますから、1 回目の包除はクローズドフォーミュ ラに変形です。
F: 括弧列を抽象化して、底辺を基準に左の高さと右の高さのペアだと思うことにします。すると、隣り合う 2 つのどちらを左にするとよいかが決まります。これは狭義の弱順序ですから、C++ のソートが使えます。順番が決まりましたら、シュミレーションです。
余談
Wolfram Alpha 先生によると、E の 2 回目の包除([ tex: (1+q) ] の部分和に何かを代入した形)はこのようにかけるそうです。Hypergeometric Function とはなんなのでしょう。定義をググった感じ、定数時間で計算できるとは思えませんし、これ以上の高速化は難しいでしょうか。
\sum _ { i = 0 } ^ k \binom(n, i) * x ^ i - Wolfram|Alpha
評価
D には触れない方針です。
E、F は、易しめだったとはいえ、かなり順調でした。
問題は C でしょうか。何故か M 元集合の bit DP が過り、難しすぎませんか? をしていました。
ところで D には触れない方針です。