コンテスト時間: 2024-09-28(土) 21:00 ~ 2024-09-28(土) 22:40 (100分)
A - September
Difficulty: 11
解答時間: 1:37
- 英小文字からなる12個の文字列が与えられる。 の長さが であるような整数 の個数を求めよ。
S[i].size() == i
であるならば答えのカウンターを加算。
B - 1D Keyboard
Difficulty: 54
解答時間: 9:41
- 26個のキーが数直線上に並んだキーボードがあり、このキーボードの配列はを
ABC ... Z
を並べ替えた文字列 で表される。文字 に対応するキーが座標 にある。これから、このキーボードを使ってABC ... Z
を順に入力していくことを考える。はじめ、指はA
に対応するキーの座標にある。Z
に対応するキーを押すまでの指の移動距離の合計として考えられる最小値を求めよ。 - 今指が座標 にあって、次に押す文字 に対応するキーの座標を とすれば、移動距離は で求められる。したがって、
B
,C
, ...,Z
に対してこれを足し合わせていけばよい。 - を求めるのは普通に線形探索でよさそう。
C - Max Ai+Bj
Difficulty: 75
解答時間: 1:45
- 長さ の整数列 が与えられる。 を満たす整数 を選んで、 の値を最大化せよ。
- が答え。両者を降順ソートするなり、
max_element
を使うなりで瞬殺。 - 本当にこれ250点もあるのか?逆に不安になったわ。
D - Hidden Weights
Difficulty: 765
- 頂点 辺の有向グラフが与えられ、 番目の有向辺は頂点 から に向かっており、重み を持つ。次の条件を満たす、各頂点に整数を書き込む方法を1つ求めよ。
- 頂点 に書き込まれている値を とする。すべての辺 について、 が成り立つ。
- 1つの連結成分に関して、ある頂点に書き込む数を として決め打てば、その連結成分のほかの頂点については芋づる式で書き込む数が決まっていく。
- DFS などで頂点 から探索していけばよいのだが、1方向にしか辺を張らない場合、「 を満たす整数について、頂点 から 頂点 を探索する」ときに、頂点 が探索済みのため値を更新できないケースが発生する。
- 例えば、サンプルケース1で仮に頂点 から に辺が張られていたケースとか。
- これがうまく解決できずにバグらせてしまったのだが、結論としては、入力時に と の2方向の辺を張ればうまく DFS が機能するようになる。
結果
Performance: 629
Rating: 600 → 603 (+3)
B問題をもっと早く処理できていれば、もうちょい伸びたか...? でも今回のD問題は割と楽しめたかも。