コンテスト時間: 2024-04-13(土) 21:00 ~ 2024-04-13(土) 22:40 (100分)
A - Zero Sum Game
Difficulty: ???
解答時間: 2:46
- 勝者の持ち点が1増え、敗者の持ち点が1減る一対一のゲームを 人が行うにあたって、人 から の最終的な持ち点 が与えられたとき、人 の最終的な持ち点を求める問題。
- 人の持ち点の総和は で常に変わらないことに気付けば、 を出力すればよいことになる。
これに気付けなくてもサンプルケースを見ればなんとなくわかったり...
B - Commencement
Difficulty: ???
解答時間: 4:01
- 以上の整数 について、「文字列 にちょうど 回現れる文字はちょうど0種類または2種類ある」が成り立つかどうかを判定する問題。
- まず に現れる文字の種類と個数を連想配列 (
map
) で管理する。そして、各 に対してmap.second == i
を満たすならばカウンターを増やし、map
の要素を全走査後、カウンターが0または2はでないならばNo
を即時に返して終わり。最後まで進めばYes
を返す。 の上限が100なのは、 の長さが最大100であり最大100個の同じ文字が出現する可能性があるから。
C - Airport Code
Difficulty: ???
解答時間: 20:56 (2WA)
- 与えられた文字列 が、英小文字の文字列 に対して2つの操作のうちいずれかを行ってできた文字列かどうかを判定する問題。
- の長さ3の部分列をとり、それを英大文字に変換する。
- の長さ2の部分列をとり、それを英大文字に変換したものの末尾に
X
を結合する。
- まず、 の末尾が
X
かであるかそうでないかで場合分けをする。 - 前者なら
S[0]
とS[1]
について、後者ならS[0]
とS[1]
とS[2]
について、それぞれ の各文字を全探索して存在するかをチェックする。...と言いたいところなのだが、 の部分列を取り出してきている点を見落としており、各文字における探索開始地点がずれることを考慮していなかった。その対処の過程で2WAを踏んでしまった。