ABC154

E以外の5完。Dまでが簡単だった。もはやこのパフォーマンス値で落ち込むこともできない。

A - Remaining Balls

けっこうよどみなく書いていたつもりだけど、1分半かかってしまった。これは仕方ない。

B - I miss you...

Aより簡単。string(s.size(), 'x')みたいにするか迷ったけど、range based forでsを書き換える方針にした。

C - Distinct or Not

全部大文字のYESかい。ソートして隣同士同じのがないか調べる。これも簡単。

D - Dice in Line

これも簡単、と言いたいところだが、時間がかかってしまった。やることは簡単で、期待値の区間和の最大を求めればいい。結局シンプルにダイス1個の期待値で累積和を持った。

E - Almost Everywhere Zero

解ける問題であることはわかる。しかし、見えない。問題文や制約が、解法はこれですよと語りかけてこない。いや桁数も少ないしどうやっても解けそうではある。桁DPに見えるんだけど、めんどくさそうだし、Kが小さいことを生かしたくなる。しかしKが3通りあるのをまとめるのがまた難しい。この辺は力があればできるんだろうなと悔しく思う。最終的に使う3つの数を1000通り固定したら?それも、最上位でNと一致するときしないとき、一致するなら次の数も一致するかという場合分けがめんどい。さすがにK固定なら解けそうかなあ。Kが1小さいときに帰着させるのも面倒だよな。元々解きたくなくてFを覗いて解く自信がなかったので頑張ってEをやってた。21:43に諦めてFへ。

Fを解いて戻ってきた。桁DP、というのが何かは置いといて、そういう問題で自分がいつもやってるやつをやった。残り2分で「とりあえず書きあがったか?」という状態にはなったが、サンプルが合わないので終了。まあ最初からKの小ささを使わず桁へ行っとけという話だ。これどうやったら早解きできるのか見当もつかないな。まあもう少し自分でやってみる。

(追記)ACした。ミスしてた箇所は、「N以下」を「N未満」にするため1を足すところで111111みたいのを足していたのと、N=123040,K=3で123000を数えてなかったこと。後者はかなりきついミス。問題の難しさをもろに食らっている。そして解説の桁DPが全く頭に入ってこない。

F - Many Many Paths

パスカルの三角形の和。縦か横か斜めの和がわかるならいけそう。しかし途中で切れてるからなあ。自分はパスカルの三角形について詳しくないけど、どうにかして計算できるものを探す。和を求めたい長方形の上や左のへりにある数に注目する。パスカルの三角形は2つの数の和がその下にあるんだけど、へりの数だけ使えば中身を再現できるわけで、各数の寄与を見てみると、長方形だと広がったものがまたしぼむので難しそうだが、直角二等辺三角形ならへりにある各数がまたパスカルの三角形のように広がって、つまり1段進む毎に2倍になっていく。しかも自分自身と合わせて合計は2冪になるので簡単だ。長方形は、でかい直角二等辺三角形から直角二等辺三角形2個を除けばできるので、これで解けた。

(解説PDFを見て)r1=c1=0のケースが解ければいいの気づかなかった。まあそっちへ行ってこの性質を思いつくかは別だけど。ただ、経路で説明できる性質なのはいいね。直角二等辺三角形に分解するの気に入ってるし、想定解でさらに勉強できるという嬉しい問題だ。