2021年9月15日水曜日

AtCoder Beginner Contest 218

  Fまで六完。



G - Game on Tree 2

 しばらく解説を見ても理解できなかったが、落ち着いて考えたら理解でき、AC。

 コンテスト中は、中央値を求めるのだから答え二分探索だろう! と、飛びついてしまったのがダメだった。この方針(x以上のものを1, それ以外を-1として木DP)だと「答えがA[i]以上になるか?」という判定はできるが、(A[i]+A[j])/2となる場合の処理が上手くいかない(と思う、多分。)

 なので、考え方を変える。

 木の葉それぞれについて、「そこにたどりついたときの中央値」が求まれば、後は木DPで答えを求められる。
 で、実はこれはオイラーツアー(DFS順)みたいなことをしながらBIT上の二分探索をすることで求めることはできる。


 なお、$10^5$回くらいなら間に合うだろうとDFS部分を再帰で書いたら、PyPyだとTLEして、PythonでACできました。やっぱりPyPyの再帰は遅いなぁ。

H - Red and Blue Lamps

 解説AC。

 凸性を理解するため勉強しようと思って解説を見たのに、貪欲で解けるということでそれでACしてしまった。
 (貪欲解は)難しいけどなるほど、という感じ。

0 件のコメント:

コメントを投稿