2024年8月2日金曜日

日本レジストリサービス(JPRS)プログラミングコンテスト2024#2(AtCoder Beginner Contest 364)

 Fまで六完。

コンテスト後のツイート

G - Last Major City

 解説AC。(解説放送も見た)

 最小シュタイナー木を履修した。分かってしまえば難しくない。Kが高々10というところから3^NのDPと気付ければ自力で思いつくことも可能だったか?


Educational Codeforces Round 168 (Rated for Div. 2)

 Dまで四完。

コンテスト後のツイート

E. Level Up

 SortedSetをセグ木上の二分探索に直してAC。
 自分のセグ木二分探索のライブラリの書き方が変だったので、修正に時間を要したけど、どう書くのが良いのだろう?

 とりあえず、セグ木の演算が足し算で、
・sum(0, index)がある値以上になる最初のindexを返す
 というセグ木二分探索は実装した。

 一般的には何を二分探索で求めるようにすれば良いんだろう?

 



2024年7月31日水曜日

AtCoder Beginner Contest 322

 Eまで五完。

コンテスト後のツイート


F - Vacation Query

 コンテスト後、Pythonで遅延セグ木を使った実装だとTLEになる……という話を聞いて避けていたのをようやく実装。
 普通に遅延セグ木で通りました。(ただし、二重配列にしないという工夫はしている)

 なお、ツイートで書いている解法だと、遅延セグ木に乗せるものが足りていないですね(多分、実際に実装したら気付いたでしょう)。

 演算が多要素×多要素の場合も簡単に書けるように、遅延セグ木をライブラリ化しておくべきですね。


2024年7月28日日曜日

Codeforces Round 962 (Div. 3)

 全完。

コンテスト後のツイート


2024年7月27日土曜日

yukicoder contest 438

 A、Cの二完。Aが難しくて困ったけど、解けて良かった。(それと比べるとCは簡単だった)


No.2820 Non-Preferred IUPAC Nomenclature

 色々参考にしてAC。

 どうやって解を構成するかは分かったのだけど、木DPとかマージテクとか考えてひどいことに。
 行きがけ、帰りがけを考えればDFSで構成することができた。やっぱりDFS系は苦手なのかなぁ。
 

2024年7月25日木曜日

Codeforces Round 961 (Div. 2)

 B2もDも解けず。

コンテスト後のツイート

B2. Bouquet (Hard Version)

 こたつがめさんの放送の振り返りを見てAC。

 x,x+1が使う候補のとき、

・xをできるだけ使う → x+1をできるだけ使う → xのものをx+1に変換する

 で良いのではないか、というのはコンテスト中にも考えていた。(それで本当に良いのかは分かっていなかったが)
 ただ、ツイートの方法で良いと思ったため方針転換できなかった。

 x,x+1を使う個数の和をm/x個とすると、その個数がxの個数より大きかったとき、最低でも、求める数より大きくなってしまう。それでダメだった。
 (簡単に反例が見つかるかと思ったが、そう簡単でもなかった。ランダムテスト書くしかなかったか)





2024年7月23日火曜日

ユニークビジョンプログラミングコンテスト2024 夏(AtCoder Beginner Contest 359)

 Fまで六完。

コンテスト後のツイート

G - Sum of Tree Distance

 解説AC。

 マージテクで解けると聞き、マージテクで通そうと思った後も自力で解けなかったのは情けない。「ある頂点から根の方向へ何歩進んだか? の総和」を持たなければいけない気がし、それだと一歩一歩全ての色について更新しなくてはいけないと思ってしまった。

 が、根からの距離の総和さえ持てば代用できるため、マージテクが適用できる。