AtCoder Beginner Contest 261のきろく
久しぶりの参加録。AtCoder Beginner Contest 261に参加。調子が戻ってきたかな?
- A - Intersection (100点)
- B - Tournament Result (200点)
- C - NewFolder(1) (300点)
- D - Flipping and Bonus (400点)
- E - Many Operations (500点)
- F - Sorting Color Balls (500点、実行時間制限: 3 sec)
- G - Replace (600点): 未提出
- Ex - Game on Graph (600点): 未提出
- 結果、感想
A - Intersection (100点)
区間 が共通部分を持つとき、その共通部分の左端は で右端は となります。共通部分を持たないときはその左端と右端が入れ替わる、即ち、 となります。そのため出力すべき答えは となります。
C - NewFolder(1) (300点)
各文字列 に対して毎回 から まで一致するかを調べると文字列の長さを として となってTLEします。
map
やunordered_map
を用いることで や で計算可能で、 より十分高速です。
D - Flipping and Bonus (400点)
DはDPのD。
とします。今回は貰うDPでの記述が難しいので配るDPで書きます。初期値をとし、 に対して について のとき遷移を行います。ここでの は連続ボーナスで、とします。
出力する答えは です。
また、上の のところを など十分に小さい値にすれば場合分けが不要になります。
E - Many Operations (500点)
毎回愚直に操作 を行っていると操作回数が全体で となるので計算量 でTLEとなります。
各操作はbit演算であるため、bit毎に独立であり、2進数表記で下位から 桁目が であったときに操作 を施した結果 は初期値を として として計算可能です。よって 回目では操作前の値 に対して が答えとなり、 を に置き換えて 回目の操作につなげます。
また、 は に、 は に操作 を行ったときの値であるため、bit毎に考えずに と計算することができます。
計算量は としてbit毎に求めるのが 、後者が となります。
F - Sorting Color Balls (500点、実行時間制限: 3 sec)
初期状態で で であるような の組はソートの途中で入れ替えなければならず、その他の の組は入れ替える必要がありません。同色の球は入れ替えてもコストがかからないため、求める答えは となります。
転倒数は であるため、セグ木やBITなどで計算することができます。しかし、各色についてもセグ木やBITを作ると全体で 個の要素となるので時間計算量、空間計算量ともにオーバーします。
各色についてのセグ木やBITについては を座圧してやることで必要な要素数を全体で にしてやることができ、空間計算量 、時間計算量 でACすることができます。
G - Replace (600点): 未提出
赤diff... うん、分からん。
Ex - Game on Graph (600点): 未提出
やっぱりゲーム問題は難しい。
結果、感想
6完でレート1700目前!!
ただ、F問題で解法が思いついてから、正しいかどうか迷って実装着手まで時間がかかっていて、そうでなければ黄Perf行けてたかもしれないと思うと、もうちょっと精進しなければなと思いました。