情報妖精の競プロ日記

AtCoderの問題に対する方針を主に書きます

AtCoder Regular Contest 100

AtCoder Regular Contest 100に参加しました!
ABC102 beta:
https://beta.atcoder.jp/contests/abc102/beta.atcoder.jp
ARC100 旧版:
arc100.contest.atcoder.jp
ARC100 beta:
https://beta.atcoder.jp/contests/arc100/beta.atcoder.jp

解けた問題だけ解説をしていきますー

要項

AtCoder Beginner Contest 102 / Regular Contest 100
rated 1200 / 2800
7/1(日) 20:30 ~ 22:10 (100分)
100-200-300-600-700-1100 (6問)
ペナルティ: 5分

方針

前回の失敗分のレートを取り返すことを考えると3完しかないけど、時間が足りないかも
とりあえず2完をして、最低限は維持したい

A - Multiple of 2 and N

Nが2の倍数ならば、明らかに答えはNです。
そうでないなら2Nが答えになります。

B - Maximum Difference

まず、A_i > A_jであるとします。この時絶対値記号は外せますね。
A_i - A_jについて、あるkが存在してA_k > A_iだったとします。
この時、明らかにA_k - A_jの方が差が大きくなるので、まずA_iAの最大値であることが分かります。
逆にA_jについてあるkが存在してA_j > A_kならばA_i - A_kの方が差が大きくなるので、A_jAの最小値であることが分かります。
よって最大値の要素から最小値の要素を引いた値が答えになります。

C - Linear Approximation

まず、B_i=A_i - iを定義すると、この問題は\sum_{i=1}^N |B_i - b|を最小化する問題になります。
ここで、あるbについてbより小さいB_iの個数をx個とします。
この時、bを1増やすとx個は距離が1離れ、N-x個は距離が1近づくので結果的に悲しみはN-2xだけ減ります。
ということは、x=N/2の時、つまりbB_iの中央値の時に答えは最適になります。

結果

oxxx 1完(300点) 31:39(0WA)
533位 パフォーマンス: 1377
レート: 18471789(-58)

感想

余りにも解けなさ過ぎて精神ダメージが高い、吐きそうな気持ち。
何でこんなに解けないの……。