ABC 339 (2024/02/03)
〇A問題
Kaplam.icon素直に最後の点の位置求めてそれ以降出力
kakip.iconS.split(".")[-1]
tako.icon同上。出かけてたのでUnrated
まーす.iconSの先頭から見ていき,.が出たら出力ansをリセット.
TTT.icon Kaplam.iconさんと同じです.
おたふく.icon 逆順で.が最初に出てくるまで文字を格納して、逆順で出力。
Yuto.icon s.split('.').last()
CarpDay.icon kakip.iconさんと同じ.1lineで嬉しい.
yuichang.icon後ろからfor文
〇B問題
Kaplam.icon頑張って書く
kakip.icon%使って頑張る。回転をミスって時間かかった
tako.icon適当
TTT.icon コンテスト後に落ち着いて愚直に実装したらACでした.時間内に解き終わりたかったです.
まーす.icon方向と現在地を記録する変数を使い,問題文の指示にしたがって場合分け.
おたふく.icon %でトラストを表現。向いている方向を0 : 上, 1 : 右, 2 : 下, 3 : 左として、向いている方向も%で表現。
Yuto.icon 回転行列を使ってdy, dxを良い感じにやる.y, xの更新する時,Rustのusize, isize周りでごちゃごちゃして時間かかった.
CarpDay.icon素直に実装.いつもと異なる環境で参加したため,出力時に空白区切りにしていたのに気付かず1WA.
yuichang.icon頑張る
〇C問題
Kaplam.icon0以下になる一番低い所を求めてその分足す(問題設定とかタイトルのPerfect Busとか明らかにチルノのパーフェクトさんすう教室が元ネタ,Writerにevimaさんいるし)
kakip.icon同上
tako.icon負数になったら0に戻す
TTT.icon Aを順に最後まで足していき,その際にとった最小値の絶対値を最初の乗客数として再度Aを順に最後まで足していきました.
まーす.icontako.iconさんと同じ.
おたふく.icon 逆順でバスの最初の乗客の人数を求めて、最終的なバスの乗客人数を求める。
Yuto.icon 累積和の最小値を最初の人数にする
CarpDay.icon皆さんと同じ.最小値が負になるケースしか考えていなくてWA.
yuichang.icon最小値メモ
〇D問題
Kaplam.icon素直に動かしてBFS,O(N^4)だし通るはずと思って粘ったけど14個ほどTLE,以前setの要素数多すぎたらO(1)でも時間かかることあるって聞いた気がするしそれかも,本格的にC++移行考え中
おたふく.icon 実装あるのみ。DFSで始めに解くも当然TLE。BFSに修正してAC。
CarpDay.icon 実装系だったので解くぞ!と思いつつ,ちょっと覗いてみたE問題の方が面白くて最後まで戻らず.
yuichang.icon実装間に合わず、、
〇E問題
kakip.iconSegTree
CarpDay.icon kakip.iconさんと多分同じ.気付けばシンプル.
yuichang.iconセグ木ぺたり
〇F問題
kakip.icon桁多いからそのまま掛け算したら間に合わないと思ってたけど、コンテスト後dict使って書いたら通った。騙された
tako.iconpythonで殴る。初のF問題時間内AC
まーす.iconD,E飛ばしてFへ.Aに含まれる各数字の数をカウントし,A[i]*A[j]==A[k]となるような組を数え挙げるだけ.ただ,A[i]*A[j]>10^1000の計算に時間がかかりすぎていたことに気づかずに大幅ロス.まあ,時間内に解けたからいいや.
おたふく.icon pythonは整数で扱える上限が4300桁?みたいなので、10^1000は問題ない。なお、大きい整数の掛け算はTLE、切り捨て除算ではAC。A × B = Cを満たすA, B, Cの組を探すときに、AとBを全探索してCが何個あるかを調べるより、AとCを全探索してBが何個あるか調べるほうが速い。
CarpDay.icon少しでも繰り返し回数削るように工夫しようとして時間ロス.入力例3が合わず,シンプルモデルにしたら正解.でもそのコードではTLE.なるほど,10^1000×10^1000の計算したらあかんね.気付かず残念.反省.