出力を入力へ

プログラミングに関する自分が考えた事を中心にまとめます

参加記録 ARC103

前回からちょっと時間が空いてのARC103. CとDの部分点を解いて 600(2) 79:45, 533rd 1003 -> 1081(+78) パフォーマンス1537でhighest更新.

C - /\/\/\/

方針自体はすぐに思い付いた. 数列の偶奇で分けて,一番出現頻度が高い数字に合わせて他の数を修正すればよい. 偶奇で同じ数にはできないので,偶奇それぞれで2番目まで出現頻度の高いものをカウントし, 偶奇のそれぞれにて出現頻度が最も高い値が同じならば,偶奇どちらかを2番目に出現頻度が高い数にすればよい.

最初上手く実装する方法あるのかと考えたが なさそうなので愚直に実装した. n も v_i も 105程度なので実行時間の制約は厳しくない.

さっさと実装して提出するもWA,不具合を見付けて修正・再提出するもWA (22:55経過時). 奇遇の最も出現頻度が高い数字が等しい場合に2番目に出現頻度が高い数に修正する処理について, なんとなく分岐処理があやしかったので修正して提出したところACとなった.

正答できたとはいえ,なんとなくで修正して提出する非常にあいまいな対処.

D - Robot Arms

入力例2に助けられた. どういったときに条件を達成できないのか考え, 入力例2を考えて, X_i + Y_i の偶奇が等しくなければいけないことに辿りついた.

配点と他の人の解答状況からのメタ読みで, 600点は無理と判断して部分点狙いでいくことに決定. X_i と Y_i が小さいときはどうすれば条件を満たすアームが簡単に構築できるか考えていたら 腕の長さ1のアームをたくさん並べればいけそうだと判断. それに気付いてからは10分かからずに実装して提出,AC.

と中であきらめて他の事をしていたのがもったいなかった.