ABC171 参加メモ
atcoder.jp
速さが…足りない! 427th Perf=1901 1917->1916(-1)
A - αlphabet
isupperを知っている喜びを噛み締めるB - Mix Juice
ソートして 要素を小さい順に足すC - One Quadrillion and One Dalmatians
のべき乗を引いていくと文字数が少ないときのナンバリングが消えていくので 最終的に 進数の値になってくれる。 デコードして終わりD - Replacing
今どの数字が何個あるかは高速に追えるので、それをシミュレーションして総和も同時に計算していけばいい。E - Red Scarf
が偶数のときは を全てxorしたときの値が全てのすぬけくんのスカーフの非負整数のxorになっているので、その値から に xorすれば答えが出てくる。F - Strivore
文字を「置く」事を考える。これは を置くか、 を置くかということである。
現在 文字目を置こうとしていて、 を置こうか否かというようになっているとき、もし、 の を置こうとしているなら、 を必ず置くものと見ても構わない。 明らかに、後に を残しておいたほうが見られるパターンは多いし、 置かない理由が他に無いと思う。
このような遷移にしておくと、実はパターンの重複も起こらず、全パターン列挙できる。
置くときに分岐が発生しないので重複はないし、 置くことでのパターンの欠如はないのでそうだと思う。
すると、 : 文字目まで置いていて、現在 を置こうとしているときのパターン数
というDPが生まれるが、遷移を見てみると、DPの答えが 二項係数に つけたような数になる。
のとき、少し挙動が異なるが、もう があるように見てしまって、 を見てしまっても、最終的な答えが変化しない。 というのも、文字がどうであるかはそもそも関係無かったりする。
DPが二項係数に依存するということは、実際にやらなくても求まることがわかるので、 を求めて、これが答えになる。
なんかこういうふうに考えたけど解説見るともっと頭良さそう すげえ
感想
やっぱりオーダーが追いつかないけど DP で考える方策は意外にたくさん使えるんだなぁって思った。DPに現れる法則性に気づくと、早くなるんだね
ちゃんと解説も見たい。