ABC292 ~Rubyで解いてみた2~
ABC292
2023/03/18, 2023/03/19
- このセット、Fが数学問題だったからかなりパフォ貰えそうで、(リハビリ終えた上で)リアタイで解きたかったなぁ〜という気持ちに!
- と一瞬思ったが、Rubyで書いていたらE問題で絶対ペナってただろうから、そんなことないか😐
- 引き続き精進頑張る🔥
A
- 自然に解いても1行なの嬉しい!笑
B
case
,when
自分では最近書いてなかった気がするから久々の登場
C
- 約数の個数を先にカウントしておけば良い
- めっちゃ見覚えのあるやつだ〜
- この計算量が意外と少なくて済むの懐かしい……!
- めっちゃ見覚えのあるやつだ〜
D
map!(&:uniq!)
と、map!(&:uniq)
と、map(&:uniq!)
の比較、面白いかも!- (私が)通常やりたい!と思うであろうものは、3つ目で実現できる
- と思ったけど、これ不要そうだった泣
has_seen = [false] * n
と、edges = Array.new(n) { Array.new(0) }
の差を再確認した- とりあえずUnionFindで連結成分出しておいて、後から点の個数と線の個数数えるのが良さそうと思った
- 計算量も足りている感じがするし
Array#inject
を使うときに、初期値を入れないとよくわからない挙動になった- 先頭の要素のループに入らない?
- TODO: 確認する
- 先頭の要素のループに入らない?
- TODO: ngtkanaさんの解説 の考え方で、私の実装の後半部分は大幅カットできるからやる
- UnionFind のメンテをした
- メンバーも管理するように
- lib/union_find.rb にファイルを作った
- まぐまぐの を参考にさせてもらった
E
- 任意の点から、到達できる点全てに辺を引くようにすればok
Thread::Queue
初めて使ってる!pop
が、空で実行したら勝手に止まってくれるのは良さそうだけど、Thread.start
をしないといけないぽいね……?- だったら、普通に
empty?
か見てから進むほうが簡単かな
- だったら、普通に
Queue#new
に引数入れられるのは、今のAtCoderのv2.7じゃダメだった〜!- 提出したら
ArgumentError
で落ちてガン萎え 😭 - EasyTest の方は通ったから気づかなかった〜
- コードテストで試すか、
- TODO: 自分の手元のRubyのバージョンを合わせる必要があるね〜!
- 提出したら
F
- ただの数学問題で笑った
- 完全に高校数学の三角関数じゃんね🤣
sinθ
とcosθ
を消すの懐かしい
- 長さの比が半端なく大きい時にだけ注意だ!