Piles全体感想5問正解で、76位。これはちょっとずつ反省ポイント。Eがノート上で解けたのは、残り12分時点でした。そこから実装して残り2分でAC。あと1箇所計算式をミスしていたら、バグ取り切れずタイムアップしていたでしょうw分かったぶんがきちんと点数に反映できると、後悔が少ないですね。Fも、実例構成すれば終わりで実装力は要らなさそうだったので30分以上考えたけど解けず。全体でも正解者が7人の難問だったようです。Upコスト1節約できる回数を最大化するゲーム。選ぶと可能性がある節約は全部実現できる。よって、$(p,q)$が差となっている2点を数えればよい。逆にいうと、2点の差$(p,q)$の出現回数を集計して最頻値をとる。出現回数の集計はCounterあるいはdefaultdictあたりで書くのが簡単でしょうか。(参考:■)出現回数の最大値を取るところで、$N=1$だと空集合のmaxをとってしまい、1RE。2式が$c$の符号を変えただけになっていることからも、雑にいうと1つの数の係数を好きに決められてしまうという自由度の高さが読み取れます。1$倍されて足される。・全部$+$あるいは全部$-$以外なら作れるというのが結論。・「全部$+$」「全部$-$」が作れないことの証明:初手に$x-y$をやったとする。(-2-1-3)$.実装も3つに分けて、上述の例で確認しながら実装しました。Merchant一度誤読しました。「1つ操作を選び、それを任意回数行う」ではなく「1つ操作を選び行う、ことを任意回数行う」でした。(前者の場合、1種の金属しか扱わなくなって、簡単な問題3回。600点だと流石にそんなことないですね、その辺の感覚もうちょっとなじませないと...)。換金し放題なので、各時点で「一番価値が高い状態を目指す」問題です。「価値を最大化」という漠然としたイメージを突き詰めると、「次の段階のどんぐり換算での貨幣価値」として定式化できました。あとは同種のdpを2回です。1回あたり$O(N)$だからかなり雑でも通るだろうと思っていたのですが、TLEを食らいます。?なので、2回目のdpは$O(N^2)$です。計算量を誤解して提出していた恥ずかしいやらかしですが、PyPyで提出して1TLEのみで事無きを得ました。Piles$H$方向でdpだというのは想像がつくけれど、かなり難しかった。最初の本質的な気付きは、「途中経過で現れる最大値の個数」ごとに同じ計算になりそうだということ。4$」が最大値として現れる場合は、等しく扱える。M+D]$はあくまで$M$のみから定まっているので、一度最大値$3$に到達しているのであれば、$4$段目に進めるかどうかは$2$段目以下の高さ関係なく決まる。「気付き」というか当たり前のことではあるのだが...。3$」というようなルートに固定しても、上手く計算できない。最小値で並んでいる状態から、操作順の並べ替えが存在するからだ。今度は、「$y=0$を経由する人数」「$y=1$を経由する人数」などを固定してみる。すると、いじる$y$座標の順番は確定するので、場合の数が階乗の積で計算できる。今度は、各$y$座標を経由する人数の分布としてどういうものがありうるかを考えてみる。3$と更新されるルートの場合、全員が最大値$0$を経由する。$y=2$については、$1$人から$N$人まで自由に決められる。あとは最大値集合ごとに...と思ったが、「$k$ステップで$H$段に到達する方法の個数」を各$k$に対して求める...$k=1,2,\ldots,N$の値を持ってdpしていく??$O(NH)$で全然ダメ。dp[h-k]\]というような漸化式が立った。漸化式が立っても今度は普通にやると$O(HD)$でやっぱりアウト。そこでdpの累積和も一緒に更新しておき、dpの区間和はそこから計算する。これは過去問で経験があったため、すぐに対応できた。最後の発想も難しくはないが、結果論としてあと3分悩んでいたらアウトだったため、過去問を練習していなかったらアウトだったと思われる。練習が少しずつ実力につながっているのか。44分4完1ペナで、249位でした。45分4完(1ペナルティ)で114位でした。107分4完10ペナで、50位でした。56分5完で、11位でした。75分4完(ABCE)4ペナ、163位でした。形式的べき級数解説pythonその他タイトルとURLをコピーしました。