Educational Codeforces Round 104のきろく
問題文和訳はこちら
- A. Arena / Арена (実行時間制限: 1 sec)
- B. Cat Cycle / Круговорот котов в квартире (実行時間制限: 1 sec)
- C. Minimum Ties / Как можно меньше ничьих (実行時間制限: 1 sec)
- D. Pythagorean Triples / Пифагоровы тройки
- E. Cheap Dinner / Дешевый обед (実行時間制限: 4 sec): 未提出
- F. Ones / Единицы (実行時間制限: 3 sec): 未提出
- G. String Counting / Подсчет строк (実行時間制限: 10 sec): 未提出
- 結果、感想
A. Arena / Арена (実行時間制限: 1 sec)
レベルの一番小さい訳ではないヒーローを1人選び、そのヒーローとレベルの一番小さいヒーローを 回戦わせることによってそのヒーローを勝者にさせることができます。レベルの一番小さいヒーローについてはどのような組み合わせであっても勝つことができないため、勝者になることはありません。つまり答えは です。
B. Cat Cycle / Круговорот котов в квартире (実行時間制限: 1 sec)
が偶数のとき、1度も猫Aと猫Bの行き先が重なることはありません。これは奇数時間目には猫Aは偶数箇所目に、猫Bは奇数箇所目に、偶数時間目には猫Aは奇数箇所目に、猫Bは偶数箇所目に行こうとするからです。この時答えは となります。
が奇数のとき、 時間目に行き先がかぶります。最初に 時間目に行き先がかぶった時、猫Bが行き先を変更しますが、その行き先を変更した後の状況は場所のインデックス全体をスライドさせることによって最初の状況と変わらないことがわかり、 時間の周期で行き先がかぶることが分かります。実際の猫Bのいる場所は最後に行き先がかぶった時にAがどこにいたかを基にそこから何個先に進んだ場所かを計算することで求まります。
C. Minimum Ties / Как можно меньше ничьих (実行時間制限: 1 sec)
が奇数の場合、各チームは他のチームの内半分に勝ち、もう半分に負けることで全チームの点数を同じにすることができます。そのような結果は今回の出力フォーマットでは と を交互に出力させるような形式でつくることができます。このようにして全体の引き分け数 の例が作れます。
が偶数の場合各チームが少なくとも1回は引き分けになる試合をしないと全チームの点数を同じにすることができません。逆にそれぞれにチームについて引き分けにするペアを1つずつ決めてやることで全体の引き分け数 の例を構成することができ、これが最小です。具体的に構成する場合は各ペアを としてそれらの間の試合を引き分けにし、また、同様の について と の試合をそれぞれ左側が、 と の試合をそれぞれ右側が勝利したことにすると楽に実装できます。
D. Pythagorean Triples / Пифагоровы тройки
Πυθαγόρας*1の三平方の定理から 、Вася*2の式から となるため $$\begin{align}
a^2 = c + b = c^2 - b^2
\\ \therefore (c+b)(c-b-1) = 0
\end{align} $$ であり、 も も正整数であるため、 より であることが分かります。ここから2つの解法を考えました。
E. Cheap Dinner / Дешевый обед (実行時間制限: 4 sec): 未提出
なんかDPしそうだなってことぐらいしか分かりませんでした。
F. Ones / Единицы (実行時間制限: 3 sec): 未提出
これもDPかな? って大きいなって思いました。
G. String Counting / Подсчет строк (実行時間制限: 10 sec): 未提出
10秒とかやばいなって思います。
結果、感想
D問題に2WAつけてしまったのが痛いなとちゃんとlong long
宣言しないといけないな。どうしてもint
で格納できるなって考えてしまうので、後まで考えてから実装することにしないと。