jj1gujのブログ

アイコン画像は音速の奇行子 様よりいただきました

ABC160参加

ABC157に参加しました.
結果はこちら
Fortranで5完でした.
やったね!

A問題

問題文のとおりに実装しました.

B問題

$X$を500で割ったあまりを$Y$としたときに$1000 \times \lfloor X/500 \rfloor +5 \times \lfloor Y/5 \rfloor$を出力しました.

C問題

なんか考察中に頭の中がごちゃごちゃになって無限に時間を書けてしまいました…
結局隣同士の家の距離を求めて, その距離の総和から最も大きい隣同士の距離を引きました.

D問題

これもC問題で無限に時間を書けてしまった焦りから頭の中がごちゃごちゃになってしまっていました...
今回制約が$2 \times 10 ^ 3$で二重ループをかけられるので各点$i$から, その点の右側にある点$j$までの最短距離を$\min ( j-i, abs(i-X)+abs(j-Y)+1)$で求め, 合計を求めました.

E問題

実はD問題解いてるときに問題文を読んでてなんか解けそうな気はしていました...
結局無色のりんごは赤リンゴにも青りんごにもなれるので, 最初に$P$から大きい順に$X$個, $Q$から大きい順に$Y$個取り出し, 1つの配列$S$に格納しておきます. そうするとABCの過去問にありそうな$S$の要素を$R$の要素で書き換えて$S$の総和を最大化する問題になるのであとはこれを解けばよいです.

今回C問題AC時に冷えることがほぼ決定していてかなり焦っていました. しかし, なんとか終了間際にE問題まで通すことができて本当に良かったです!! Cに時間をかけてしまったのは正直精進不足だとおもいます.
これからはCまで20分以内に安定して解けるように頑張ります!!