AtCoder Regular Contest 102
AtCoder Regular Contest 102に参加しました!
AtCoder Beginner Contest 108 beta版
AtCoder Regular Contest 102 旧版
AtCoder Regular Contest 108 beta版
解けた問題だけ解説をしていきますー
要項
AtCoder Beginner Contest 108 / Regular Contest 102
rated 1200 / 2800
9/4(土) 21:00 ~ 22:40 (100分)
100-200-300-700-700-1200 (6問)
ペナルティ: 5分
方針
ただいま合宿中なので、あまり時間は掛けられない。
従って、CD2完を速くして残った時間でE挑みを軽くしてみる程度に抑えたいところ。
A - Pair
1からの中に偶数は個、奇数は個あるので、ペアの数は個となります。
B - Ruined Square
まず、正方形であるからとなります。
また、対角の座標の和は等しいはずなので、となります。
ここから、よりと分かります。
あとは、、と導出できるので、それを出力すれば良いです。
C - Triangular Relationship
考え方は2つありますが、まずは決め打ちで解いていくことを考えてみましょう。
ここではを決め打ちます。ただしとします。
この時、より(は任意の正の整数)と分かります。
同様にも分かり、よりであるからということが分かります。
従って、がの倍数であるときはとはそれぞれを用いて通りとなります。
後は足していけば解けます。
なお、上の式を更に工夫すると、が奇数ならばはの倍数でありとなるから、答えはです。
逆にが偶数ならばはの倍数だから、答えはです。
D - All Your Paths are Different Lengths
構築問題は、簡単な規則性があるはずです。
まずは、問題に着目するとという非常に小さい値に気付きます。
また、より、おそらく何らかの方法でが出てくると想像できます。
そこで、まずは丁度通りの経路ができるような辺を考えていきましょう。
実験をすると、経路数は各頂点について移動前の経路の合計になることが分かるので、多重辺の経路数は積の形になることが分かります。
例えば、の経路を2つ、の経路を3つ置くとの経路は全部で通りになります。
ということは、例えばの経路を2つずつ用意すると、38個の辺で通りまで対応できます。
さて、もちろんですがは2の乗数とは限りません。
その点を調整していきます。
まず、としてみましょう。
まずはに2個、に2個の辺を置きます。これで4通り。
この時、は1通り、は2通りあることに着目すると、にもう1個辺を増やすとちょうど経路が2個増えます。
同様に、例えばとするととに1個ずつ辺を増やせば経路が3個増えます。
このような辺の置き方は、を2進数で表した時の値を見れば分かります。
例えば、のときは頂点数であり、とに追加の辺が置かれます。
この時、各頂点に対して高々3個しか辺を伸ばさないことから、より条件を満たします。
さて、これで辺の繋ぐ場所は分かったので、後は長さをどうするか考えましょう。
まず、番目の頂点に対して長さがの通り網羅したいので、の辺の長さはとの2つにします。
後は、残りの辺の長さは今まで繋いだ経路数+1にすれば良いので、毎回加算しながら辺の経路を決めていけば解けます。
結果
oox- 2完(1000点) 15:07(1WA)-65:11 / 70:11
169位 パフォーマンス: 2074
レート: 1695→ 1739(+44)
感想
宴会中な割に早解きできた点は良い点だけど、E問題も頑張れば解けたはずなのでこれは反省。
もう少し構築問題は速く解きたいところ。
構築問題は簡単な規則性があるので、如何に速く気付くかが鍵か。