りにゅうしょく

競技プログラミング 日常

Codeforces Round #677 (Div. 3) 出たよ~~~

https://codeforces.com/contest/1433
結果:ABCD4完、微冷え

A.Boring Apartments

1~10000まで部屋があるアパートで、1→11→111→1111→2→22→……と、ゾロ目のところにだけピンポンダッシュする。部屋ナンバーNの人が出たとき、今までピンポンダッシュした部屋のナンバーの桁数の和を求めるというやつ。
部屋ナンバーの末尾をA、桁数をBとすると(A-1)×10+(1~Bの和)ってなる。

B.Yet Another Bookshelf

N冊の本を収められる本棚があり、0のときは空で1のときは本が入っている。1回の操作で、本を右か左の空いている部分に移動させることができる。本を収納している部分を全て連続させたい場合、何回の操作が必要か、というやつ。
前から順に見て行って、最初の本が出てきてから空白を数える。次の本が出てきたら今までの空白を足して空白カウントを0にする。

C.Dominant Piranha

N匹のピラニアがいて、i番目のピラニアの大きさはA_i。一度の操作につき、左か右のピラニアが自分より小さい場合に、そのピラニアを食べることができる。共食いしたときに最後まで残るのは何番目のピラニアか、というやつ。
全てのピラニアの大きさが等しいとき、-1。そうでないときは、一番大きいピラニアの内左右いずれかの大きさがそれより小さいもの。

D. Districts Connection

N個の都市があり、i番目の都市には番号A_iが割り振られている。都市間にN-1本の道を作ることにする。割り振られている番号が同じ都市同士を直接繋がずに、すべての都市間の行き来を可能にすることはできるか。できる場合はその組み合わせを出力する、というやつ。
全ての都市の番号が同じとき、-1。そうでないときは、1番目の都市と番号が違う都市は全部1番目につなぐ→まだ使ってない都市について、また番号の違う都市に適当につなぐ……を繰り返したら通ったけど、なんで通ったのか微妙にわからない……。

E. Two Round Dances

まず問題文が読めなくて困る
n個ボールあるからn/2個ずつに分けて輪っかをつくるんだけど、輪っかの作り方は何通り?(byじゅぴろさん)(ありがとうございます!!)
	a(n) = (2*n + 1)!/(n + 1)らしいです。(OEISに投げた、ここのnはN/2)
これが大量に通されているのでへこむ

こどふぉ、出る前は出たくね~~って思うけど冷えてもあまり深刻に受け止められない分ちゃんと出て学びを得ていった方がいいなと思いました