2021年6月28日月曜日

AtCoder Grand Contest 054

  Cまでの三完で101位でした。Highest更新できて嬉しい!

 ただ、難問が解けたわけではないんですよね。早解き回では時々良い成績が取れるんですが、早解きが得意というわけでもないので、なんというか、運任せのようになってしまう。今回は、BもCも結構最初から正しい解法を考えていたけれど、偶然に近いものね……。
 もっと難しい問題を解く力を付けないと。


B - Greedy Division

 初手で実験を書いたのが結果的には正解だったと思う。
 実験というのは、Wの配列に対して、どんな順列がありうるか……というのを順列全探索で求めるコードです。

 それを眺めていたら、「あれ、和がSUM/2に一致していれば、高橋君や青木君の取り方をどんな順番にしても、正しい順列が一つ求まるのでは?」と気付き(気付けば証明もしやすかった)、後はナップザック問題みたいな感じでした。

 計算量が四乗になるのがちょっと不安だったけれど、定数倍が小さそうなので大丈夫だろう、と提出したら無事AC。

C - Roughly Sorted

 これは、「2 1 4 3 6 5」でK=1の場合などを考えました。この例で、1や3はいくらでも後ろに動かせるけど、2が4の後ろにいくと途端にダメになるんですね。
 それを見て、「自分より前に登場している自分より大きい数の個数」がKに一致しているものしか動かせないんだな、と気付けました。



(DかEはできれば解説ACしたい)

0 件のコメント:

コメントを投稿