Codeforces Round #624 Div3
codeforces.com
やったよ
問題たち
A
場合分けするだけ同じだったら0, 答えが1にならない方は2になる
B
みたいなところを連続な区間と呼ぶとすると、連続な区間の中で昇順ソートすればいいこれで昇順になってなかったらNOだよね,ほかはYES
C
それぞれの段階で何回どのボタンを押したかはわかるので前計算するで押し直していくので、 の段階のボタンを押す回数を答えに追加していけばいい
最後は最後まで行くので の段階のところを追加する
文字なので、配列を256個用意して楽にやろうとしたらMLEしてきれちゃった
ケチって26個だけにしようね
D
全部うまく見る for文のやりかたを工夫するBやCは10000より大きくなるかもしれないので気をつけよう(30000くらいまでで良さそう)
E
木がリストになっている時、最大の数になっていることがわかる。また、木が平衡している(この表現で良いのか)時は最小の数になることがわかる。
これがわかると、この範囲外は"NO"と出力できる。
実は、範囲内に入っていれば全て "YES" になる。
木の葉の数はリストになるまで、 より大きい。
番目に深い位置にある葉を としよう。 の深さを と呼ぶことにする。
番目に深い位置にある葉を とするとき、 そのものか、 から のパスにある頂点 について かつ子の数が 以下であるものが存在する。
頂点 の親を にしてあげると、総和が だけ増えるので、これをリストになるまで続ける。
実際に構成すればこの問題は解ける。
実装楽しい
F
要素 について、かつ ならば、 にかかるコストが になる。
そこで、 を昇順ソートすると、 条件は のみになる。
速度が小さいほうから処理して、その部分のコストを消していけば、
大きい物は小さい物のコストを含めないように出来る。
より右にあるもののコストは、
条件を満たす についての を全て足して、 を引けば、 について求まる。
そのようなコストの総和や、条件を満たすものの数は、更新とクエリが早い BITやSegment Tree を使うと、 で答えを求められるので、 全体の計算量は となる。
感想
char型を添え字にするときに配列を[256]とかにしない!(素振り)Eが解けたのは少し面白かった
Fは解きたいね、ABCの全完とかに必要そう