※1問も解けていないので、解説的なものを期待しているなら、以下は全く読む価値ないです。
どのようなことを考えてハマっていたかだけが書かれています。
コンテスト前のレート:1818
レート通りのパフォーマンスが得られる順位:427位
A - Xor Battle
問題
思いついた案は制約に収まらなそうなものばかりで何もできず。
20分ほどかけて解けなかったのでスキップ。
思考過程
- ビットごとに見た場合、最後に当該ビットが
になるのが、
の
よりも、
の
の方が後ろである場合は
にできる。
- ただ、ビットごとに独立ではないので、他のビットに引きずられるところをどう判定すれば? →わからない
- 後ろから
の
だけ見ていって作れる数の集合
と、前から
の
だけ見ていって作れる数の集合
を比較して、常に
ならば
と判定できそう。 →集合に含まれる個数が最悪
くらいになると思い、ボツとする
上記のと解説の
が概ね同じものに見えるけど、何で計算量が問題ないのかは全然わからない。
B - 01 Unbalanced
問題
A問題をスキップした後の2時間をほとんどこれに費やしたが解けず。
思考過程
- 最初から最後まで
と
を交互に配置するのが最善で、その時の答えは
。
- 例3を見ると、後ろの方の"11?111"の部分が最悪で
となる模様。
- 例3では、前半の
が多いところは
を主に
にして、後半は逆になりそうだが、前半に
にし過ぎたら後で
が足りなくなるなんてこともありそうで、貪欲で簡単には決まらない気がする。
- 答え決め打ち二分探索をして、特定値を超えないように操作できるかどうか判定することはできるか? →答えを決め打たないよりはまだできる見込みありそう
だと
、
だと
(ただし最小値は
)する
カウンターと逆の
カウンターを用意し、それぞれの最大値を見たりしてみるが、
で両方減らしてるのはさすがにおかしくて
ケースしか通らない。
を全部
した場合と全部
した場合を両方持ったりしてみるが、結局それをどう扱うのがいいのかよくわからない。根本的に考えを変えていくことにする。
を
、
を
とみなして、
で区切って
以外の累積和を取ってみる。 例3だと、
となる。間の
の数もわかるようにしておく。
- この数列を、
を超える値が出ないように間の
で調整していけないか?
ここまでで時間切れ。解説見ると最後の方針はかすってはいそうな気がする。
を一旦全部
にしておいて、可能な限り
に変えていくとか全然思いつかなかった。
C問題も一応少し考えたけど、文章化できるほどの思考過程がないので省略。
最終結果:0完、458位、パフォーマンス1337
レート変動:1818→1778
当時緑だった、2019/3/23のAGC032以来の0完でした。