サイシードプログラミングコンテスト2021(ABC219)に参加しました。
結果
A,B,C問題の3問正解でパフォーマンスが960でした。 D問題でDPをバグらせて原因を探すのに時間がかかりすぎた...
コンテスト中に突然PCがフリーズして焦った。最近ちょっとPCの調子が悪いから困る。買い換えるにしても新しいWindowsが出てからにしたいし。
A - AtCoder Quiz 2
問題文のとおりに処理をする。 if文でどのランクになるか判定して、次のランクの最低点との差を計算して出力する。 入力された点数がすでにエキスパートの時だけは文字列を出力するので例外的に処理が必要。
B - Maritozzo
これも問題文のとおりに処理をする。
Tを1文字ずつ読み取って、それに応じてどの文字列を連結するか判断して処理する。
C++なら読み取ったTの文字から'0'を引くと数値として1,2,3になるのでその後の処理がしやすい。(Sを配列に入れておけばになって楽)
C - Neo-lexicographic Ordering
入力された文字列を別途決められた基準でソートする問題。
手っ取り早くsortで使うようの大小比較用関数を作成してソートした。
D - Strange Lunchbox
問題文を読むとDPかbit全探索で解けそうだなと思いつつ、制約を見ては2秒で処理しきれないと判断してDPで解くことにした。 問題の内容的にDP[i][j] = i種類目中j個買った場合のたこ焼きの数とたい焼きの数 といった具合に2次元の配列=pairで処理しようとしてみた。 DPの更新でバグらせて直すのに時間がかかり、直ったけどWAがいくつかあって結局間に合わなかった。最近DPを書いてなかったから初歩的なミスでバグらせてた。
解説を見ると素直にDPを3次元で解けばよかっただけだった。試しにDPを3次元で説いてみるとあっさりACできたしちょっと惜しかったなあ。