HHKB プログラミングコンテスト 2020 参加記

2020/10/10に開催されたHHKB プログラミングコンテスト 2020に参加しました。

atcoder.jp

2週間ぶりのABCクラスのコンテスト。ここ数回は2完で終わってしまうことも結構あったので、何とか3完をノルマとして頑張ることにしました。

今回の結果

で、今回はノルマ通りの3完で終了です。

HHKB2020結果

HHKB2020結果

2完終了つづきで、下がってた分は取り戻せました。

一応Highestは更新してますが、個人的にはまだ満足行く結果じゃないので、正直更新できて嬉しいという実感はありません。

振り返り

D以降は提出できずでした。

HHKB2020提出結果

HHKB2020提出結果

A問題

A - Keyboard

Sが'Y'ならTの文字を大文字で出力しましょうという問題。

Javaなら大文字変換はtoUpperCase()でやれば良いです。

あとは実装だけ、、と思ったが変にtypoしてまったせいで提出にモタついてしまい、遅めの3分台でAC。

B問題

B - Futon

 一瞬Bにしては難しい問題かな?と思いましたが、縦横がそれぞれ100以下と小さいため愚直なやり方で通すことにしました。

縦横の位置それぞれ2重ループを回しつつ、現在位置と右、または下が散らかっていなければカウンタをプラス1する実装でAC。

C問題

C - Neq Min

解法の検討で大分モタつきましたが、p_iの最大値が200,000ということで、以下の解法で解きました。

  • サイズが200,000を少し超えるぐらいの配列aを初期値0で作成
  • p_iを読んで、a[ p_i ]をプラス1する。その後配列aの値が0となる最小のインデックスを出力する。これをN回繰り返す。

 大分愚直感のある実装で、提出後の反応がいまいちなことから、一瞬TLEもあるかとヒヤヒヤしましたが、なんとか実行時間1sec程度でACしてくれました。

D問題

D - Squares

 解けずでした。おそらく1個1個のケースについて解くなら愚直でやればいいかもしれんが、最大100,000個のケースを一回で通すとなると、個々の計算でループ回すわけにも行かないです。何らかの方程式で解けるやり方があるか色々検討しましたが、結局実力が足らずで時間切れでした。

E問題

E - Lamps

 問題を一目見て、解法がまったく思いつかず。こりゃ多分解答になんかのテクニックが必要なやつだと思って、早々に諦めました。

F問題

F - Random Max

 まったくもってわからず。後日見直します。

これまでの実績

 一応、Highest更新ですが、緑はまだ遠そうです。

コンテスト実績

コンテスト実績

 

総括

なんとか2完終了は回避しましたが、最近水色diff以上の問題がコンテスト中にまったく解けてないのが停滞の原因だと思ってます。高難易度の問題の精進にいっそう取り組もうと思います。

また、次回も頑張ります。