AtCoder Beginner Contest ABC434 解法メモ
文中で使用しているのは、PythonライクでAtCoderに最適な言語の1つNimです
ABC434
ABC434A - Balloon Trip
解法
答えはW*1000 div B+1となる
ACコード
ABC434B - Bird Watching
解法
種類毎に鳥の大きさを登録していけばよい
b=newSeqWith(M,newSeq[int]())
を用意して、
最後に、0..<Mの
b[i].sum.float/b[i].len.float
を出力すればよい
ACコード
ABC434C - Flapping Takahashi
解法
初め
u=max(0,H-t1)
l=H+t1
の間にいることができる
一方で、次に進むには、
u=[0,H-t1,u1].max
l=min(H+t1,l1)
の間にいる必要がある
もし、それが
次の
max(0,u-(t2-t1))
l+(t2-t1)
の間にいくことができるが、
同様に、
これを繰り返していけばよい
最後まで、目標が達成できたらYesを出力することになる
ACコード
メモ
区間がつぶれた際、Noを出力して、即breakするように書いてしまったため、次のテストケースの入力と混同するWAを起こした
原因がすぐにわからず、かなり時間を溶かした
ABC434D - Clouds
解法
二次元の累積和をとるimos法を用いれば、雲が一つもないマスの合計
新たに、「雲が
これは改めて二次元の累積和をとれば、求めることができる
ACコード
メモ
雲番号別に、その雲しかかかっていないマスを数えることができなかった
ABC434E - Distribute Bunnies
解法
公式解説にある通り、
ジャンプ後のすべての
辺のどちらかをジャンプ先に選ぶと考える
連接成分内にループがあれば、
そこでジャンプ先を余らせることなく使い切ることができるので、すべての頂点を使うことができるが、
木構造、つまり、その連結成分に含まれる辺が、頂点数
葉の中の
まずは、ジャンプ先の座標を座標圧縮し、
さらに、各辺をUnion-Findしながらmergeしていき、
ジャンプ先の
控えた頂点の各leaderを求め、重複を除けば、ループのある連結成分数が求まる
答えは、全頂点からgroup数を引き、ループのある連結成分数を足せばよい
ACコード
メモ
グラフを用いることすら浮かばない
Discussion