コンテスト時間: 2025-02-08(土) 21:00 ~ 2025-02-08(土) 22:40 (100分)
A - Shuffled Equation
Difficulty: 11
解答時間: 2:25
- 長さ3の整数列
が与えられる。
の要素を自由に並べ替えた列を
とするとき、
を満たすことは可能か判定せよ。
のパターンは全部で6通り考えられるが、
と
を入れ替えても
の値は変わらない。よって、以下の3つのパターンのうちどれか一つでも成り立てば答えは
Yes
。逆にすべて成り立たなければ答えはNo
。
B - Who is Missing?
Difficulty: 29
解答時間: 2:57
- 長さ
の整数列
が与えられる。
の各要素は互いに相異なり、
以上
以下であるという。
の要素として含まれない
以上
以下の整数を、昇順に全て列挙せよ。
- 各要素が
false
で初期化された長さの
bool
配列を用意し、について
番目の要素を
true
にする。 - その後先頭から走査して、
false
であるインデックスを答えの配列に追加していけばよい。
C - Bib
Difficulty: 132
解答時間: 8:12
から
の番号がついた
人の人がおり、人
は数
が書かれたゼッケンを着けていて、人
を見つめている。「
が書かれたゼッケンを着けている人」が見つめている人の着けているゼッケンにかかれている数を、
のそれぞれについて求めよ。
数
のゼッケンを着けている人の番号
- 上記のような配列を用意すれば、答えは
である。
- 求めるものがややこしいね。
D - Doubles
Difficulty: 579
解答時間 : 19:03 + WA x3
個のサイコロがあり、
番目のサイコロは
個の面をもち、各面にはそれぞれ
が書かれている。このサイコロを振ると、各面がそれぞれ
の確率で出る。
個のサイコロから2個を選んで振るとき、2つのサイコロの出目が等しくなる確率の最大値を求めよ。
- まず、各サイコロの出目とその個数を
map
で管理しておく。 - 2つのサイコロ
の選び方を二重ループで全探索する中で、
- サイコロ
の出目それぞれに対して、その出目がサイコロ
に含まれるならば、
を計算する。
- この積の総和を
で割った値がサイコロ
の出目が等しくなる確率であるから、これを最大化すればよい。
- サイコロ
- オーバーフローやら小数演算の精度やらで3ペナ。これはもったいない...
E - Cables and Servers
Difficulty: 1218
から
の番号がついた
台のサーバーと
から
の番号がついた
本のケーブルがある。ケーブル
はサーバー
とサーバー
を双方向に結んでいる。以下の操作を0回以上行うことで、全てのサーバー同士がケーブルを介して繋がっているようにするとき、操作の最小回数と最小回数となる操作列を求めよ。
- 操作:ケーブルを1つ選び、その片方の端を別のサーバーに繋ぎ変える。
- グラフ問題として考える。
- 連結成分の中でループを構成している辺のいずれかを、別の連結成分に属する頂点と接続させることで、連結成分の個数は減少する。これを繰り返して全体を連結グラフにしたい。
- ループを構成する辺は Union-Find を用いて求められたのだが、そこから辺をつなぎかえる処理がうまく実装できなかった。
結果
Performance: 916
Rating: 936 → 934 (-2)
Dの3ペナが痛かった。