ABC379 (2024/11/09)
〇A問題
まーす.icon文字列で受け取って,print(N[1:3] + N[0], N[3] + N[0:2]).
tako.icon Whitespaceで。1文字目、2文字目、3文字目をヒープの1, 2, 3に覚えといて2 3 1, 3 1 2の順でロードして出力
Kaplam.iconprint(ls1+ls2+ls0,ls2+ls0+ls1) kakip.icona, b, c = input()
yuichang.iconやる
CarpDay.iconお出かけ先からバチャコン.逆順を表示するだけと誤読して1-liner作ってから間違いに気付く.
〇B問題
まーす.iconスライスで$ \forall x; \, i \leq x < K番目の歯の状態を確認して,イチゴを食べられるのであれば,カウントして,確認した部分を"X" * Kに変更.
まーす.iconどうでもいいことですが,問題文少し見にくいですね.Xとx,Oとoは似ているので,制約のところに" 大文字の "XとOからなる文字列と書いて欲しいところです.1回ミスったので八つ当たり
CarpDay.icon同意!
tako.icon Whitespaceで。文字列を読み込んで、順番に回す。K個丸が出たら答え+1
Kaplam.iconpythonでtako.iconさんと同じ
kakip.iconreplaceしてなんやかんや
yuichang.iconやる
CarpDay.icon連続するOの個数をリストに入れて,各個数をKで割った整数商の合計
〇C問題
tako.icon sortがwhitespaceで実装できていないのでpythonで出してWA。デバッグしている間にヒープをうまく使えばソートしなくてもできるかもと思い、Whitespaceで実装してみるもののだめで萎え落ち
まーす.icon初手,制約を勘違いしてTLE.辞書で$ stone[k]: マスkにある石の数 のように格納して,X:これはinputの内容の小さい要素から,以下を確認する.(1)X[i + 1] - X[i] > stone[X[i]],(2)X[i + 1] - X[i] <= stone[X[i]].(1)は全てのマスに1つずつ石を置けないのでprint(-1).(2)は$ \sum_{k=1}^{stone[X[i]]-1} {k} - \sum_{k=X[i]}^{stone[X[i]]-(X[i+1]-X[i])-1} {k} を加算して,stone[X[i] + 1] にstone[X[i]] - (X[i + 1] - X[i])を加算.数式汚くて申し訳......
Kaplam.iconNの制約見てなくてTLE出した後こんがらがって20分ぐらいフリーズした上でサンプルすら通らない提出2回してやっと通しました_(:3」∠)_ Wを前から見ていって、次の所まで行けるか的な
kakip.icon石を持っていってがんばってかぞえる。サンプルが貧弱なので自分で作らないといけないやつ。具体例を手計算しないとミスる
yuichang.icon ソートして場所持って良い感じに計算できる
CarpDay.icon全てのマスに「1つずつ」を「1つ以上」と読み違えたのが敗因.「1つずつ」だったら実現可能な時の操作回数は一意に決まるから「操作回数の最小値」じゃなく「操作回数」でいいやん!「1つ以上」だとすると,無駄に動かしてはならないので,後ろから順に最小回数を確認する必要がある(「1つずつ」だから問題が簡単になってC問題相当になる,ということに気付かなかった自分が悪いのだが..).Xがソート済みだと誤読して1WA出したし...C問題なんだから,Xぐらいソートしておいてよ!!(やつあたり)
〇D問題
Kaplam.iconどこまでに植えた植物を刈り取ったかとかを覚えてSortedSetで日付管理とdefaultdictでその日付の時に植えたのが何個残ってるか覚えてbisectでどこから刈り取るか見つけて~みたいな
kakip.iconheapqでやりました
yuichang.icon multisetでやる。植えるクエリ来ても1つしか植えないので楽ちん
CarpDay.icon植えた日をリストで管理して,二分探索して現在よりH日以上前に植えた植物の個数を獲得して,リスト更新.
〇E問題
Kaplam.icon1桁目は1の位として何回、10の位として... 2桁目は...って考えると法則性があるのでそれを使って筆算の要領で、discoに上げたACBKが早速役に立ってしまったのは嬉しいんだけどそもそもWA出しちゃだめ_(:3」∠)_
まーす.iconコンテスト10分後にAC.おしい.方針は1の位から見ていく方針.一つ目のREは,int の上限引っかかった感じ.......
Kaplam.iconRE提出に上2行追加しただけでRE→TLEになってるんだけど、pythonってデフォルトの設定だと文字列とint型の変換に上限4300桁ぐらいの制限があるから原因それ、pythonのintは(一応2^(2^63)が上限とか聞いたことある気がするけど)まず上限ない
まーす.icon桁が大きすぎるから,TLEだったね.......残念.
CarpDay.iconREの原因がint型変換,ということ?自分のコードだと,1桁ずつしかintしていないけどREでした. Kaplam.icon同じく上2行を追加したらREが出ない(AC/TLEになる)&最終行のprint(ans)を消すとREがWAになるので多分printする時に自動でint→strに変換してるみたいです
CarpDay.iconおお!なるほど!!納得しました.ありがとう!!
kakip.iconLazySegtreeで各桁への影響を計算して下から1桁ずつ求める
yuichang.icon 主客転倒実はC++に多倍長整数があってそれ使うと1865msで通る
CarpDay.iconyuichang.iconさんのコード見て,久々にPythonのデメリットを感じました.早く水色になって,C++の勉強したい.
CarpDay.iconDP風に1桁ずつ追加したら簡単やん!と思ったらRE(&TLE).REの理由分からなかったけど,桁数多いのが原因だろうと踏んでKaplam.iconさんのいう通り筆算の要領で下の桁から確定させる.最上位が終わったあとに繰り上がりがあるときの処理を忘れててWA.まーす.iconさんと同じく,終了後10分後にやっとAC.
〇F問題
yuichang.icon セグ木、良い感じのLISを疑うも全然ダメ
CarpDay.icon時間内に見ることもできず.yuichang.iconさん,最近良い調子だね!
yuichang.icon><
〇G問題
kakip.icon蟻本に書いてたやつ