AtCoder Beginner Contest 366 EもFも解けない失敗。
— titia (@titia_til) August 10, 2024
A N/2と比較
C Counter
D 三次元累積和
E 最初45度回転したら長方形領域になると勘違い→x,y独立に計算できると気付きxを全探索する方針に変更したが答が合わない。
F 何かでソートすることを疑ったが分からずビームサーチを書いてWA
2024年8月12日月曜日
AtCoder Beginner Contest 366
Dまで四完と失敗。
コンテスト後のツイート
コンテスト中の方針でAC。
xに対して、x方向に関するマンハッタン距離の和を求める関数を得なくてはいけないが、そこでミスがあった。
ただ、それを修正しても、二分探索で上限・下限を求める方針だとTLEし、尺取りに直さなくてはいけなかった。
解けなくてはいけない問題だったのは確かだが、実装もやや面倒だし、簡単というわけでもない気がする。こっちよりFがACできなかった方がまずい。
解法ツイートを参考にAC。
コンテスト中、うまくソートする問題だろうと思い、
・C(Ax+B)+D>A(Cx+D)+B
を変形して、
・BC+DとAD+B
の大小比較を考えれば良いというところまでは書いた。なんでそれで解けなかったんですか? そこで式変形は止まっている……。
さらにいうと、昔、この問題はオンサイトで自力ACできているのに、今回解けなかったのはひどい。
2024年8月10日土曜日
yukicoder contest 440
AとCの二完。Bが解けず。
No.2836 Comment Out
全く思いつかなかった。
「数を増やす操作」を繰り返したものが最大だと思い込み、たとえば、N=5なら、
・5 4 3 2 1
とか
・2 4 5 3 1
みたいな列が最大だと思い込んでしまった。(それ以下のものは全て作れる)
しかし、この判定が意外と難しく、そこで間違えていると思ってしまった。(今でも、やり方が分かっていません)
実際の解法は単純でした。実験コードをすぐ書くべきでしたね。
Ratedコンテストならもっと早く実験していると思うのでACできただろうと思うものの、多分実験コードを書いたのはWAを二個くらい出した後だし、ACするまでに時間かかっただろうな……。
No.2838 Diagonals
自力AC。
これは、(実験せず)頭の中で考えて正解を導けた。嬉しい。
2024年8月8日木曜日
Codeforces Round 964 (Div. 4)
全完。
コンテスト後のツイート
Codeforces Round 964 (Div. 4) 最近のDiv.4は難しいのが多かった気がする。Div.4は今回くらいの難易度で良いのでは? しかし、CやGでペナ出したのは良くない。
— titia (@titia_til) August 6, 2024
D "?"には貪欲にTの文字を入れていく。
E まず最小の数を0にする。
F 0を何個選べば良いか全探索
G 三分探索
2024年8月5日月曜日
AtCoder Regular Contest 181
ACの二完。
コンテスト後のツイート
AtCoder Regular Contest 181 AC二完でした。
— titia (@titia_til) August 4, 2024
A 三回では可能。一回でできるかはBITとか使ってチェック。二回でできないのは、N,...,1のとき。
B Tの長さは分かったが、Tの長さが大きいとき処理できなかった。
C P,Qの逆順列を取り、その和がNより大きいかで1を入れるか0を入れるか決める。
B - Annoying String Problem
解法ツイートを参考にAC。
Sの一文字目がTの何文字目にあたるのか? を調べる方針は良かったし、TがSの繰り返しだろうというのも当たっていた。
そこまでくればgcdで周期を考えるのは自然なはずだが、これを思い付けなかった。うーん。
また、Tの長さを計算したら負になる場合がある、ということに気付かずWAやREを重ねてしまった。
考察は後一歩だった気もするが、ここに引っかかることを考えるとACは遠かったね。
D - Prefix Bubble Sort
概ね自力でAC。(コンテスト後にツイートなどは見たけど、あまり参考にせず解いた)
xという操作を適用すると、「x以前にあって、転倒数への寄与が0より大きいものたち」は、indexが一つ下がり転倒数への寄与が一つ小さくなる、ということには割合すぐ気付けた。
が、実装が上手くできず、Aが広義単調増加であることをどう使えば良いかも迷った。長いこと遅延セグ木でどうにかならないかと考えていたけど上手くいかず、Aが広義単調増加ならクエリに関するimos法でできると気付けた。(これが公式解説の方法だった)
700点にしては簡単で、時間があれば自力で解けたとは思うけど、Cの後こっちを解いていれば解けたという気はあまりしない。
2024年8月3日土曜日
yukicoder contest 439
Aしか解けず。
No.2828 Remainder Game
解説AC。
結構長い時間かけて考えても分からず、解説を見たら、誤読に気付いた。A_1~A_5の値(のmultiset)を求めなくてはいけないと考えていたが、和さえ求めれば良かった。
それなら自力で解けた気もするが、実際に考えたわけではないから分からない。
No.2829 GCD Divination
普通の期待値DPなのに時間がかかってしまった。(答えが合わず、解説も見た)
なお、コンテスト中に解けなかったのは、全てのNについて答えを求めないとDPが回らないと勘違いしたため。約数だけ調べれば大丈夫ですね。
2024年8月2日金曜日
日本レジストリサービス(JPRS)プログラミングコンテスト2024#2(AtCoder Beginner Contest 364)
Fまで六完。
コンテスト後のツイート
F costが小さい方から見る。[L,R,C]が来たら、その後は、Lの後Rまで飛ばして良い。RIGHT[x]を管理し、RIGHT[L]=max(RIGHT[L],R)と更新していく。
— titia (@titia_til) July 27, 2024
G ダイクストラで全頂点から全頂点への最短距離を求めて色々するかと思ったが、全然違ったらしい。
G - Last Major City
解説AC。(解説放送も見た)
最小シュタイナー木を履修した。分かってしまえば難しくない。Kが高々10というところから3^NのDPと気付ければ自力で思いつくことも可能だったか?
Educational Codeforces Round 168 (Rated for Div. 2)
Dまで四完。
コンテスト後のツイート
E どのindexでレベルアップするかをkごとに記録。SortedSetを使ったらTLEしてしまったけれど、SortedSetを使ってACしている人もいるようなので、実装が下手。まあ、調和級数のlogとSortedSetのルートがつくので計算量的にも結構厳しそうではあるんだよね。
— titia (@titia_til) July 30, 2024
E. Level Up
SortedSetをセグ木上の二分探索に直してAC。
自分のセグ木二分探索のライブラリの書き方が変だったので、修正に時間を要したけど、どう書くのが良いのだろう?
とりあえず、セグ木の演算が足し算で、
・sum(0, index)がある値以上になる最初のindexを返す
というセグ木二分探索は実装した。
一般的には何を二分探索で求めるようにすれば良いんだろう?
登録:
投稿 (Atom)