精進メモ 2021/10/04~
書き忘れてました。
MojaCoder Random Xor Division
リンク
が想定っぽい?ですが、で解けました。
ビットごとに見ます。すると、累積和の偶奇で右端を固定したときの相方の候補が出せます。
数日前のABC-E問題同様、2の冪乗の累積和を計算して、右端より右側で自由に切れる部分、左端より左側で自由に切れる部分のパターン数が計算できます。
あとは、ビットごとに上記を計算していき、総和を取って、全体のパターン数であるで割れば答えです。
ABC222
C - Swiss-System Tournament
毎回愚直に対戦させ、勝利数を計算してからソートしなおしていけばOKです。
D - Between Two Arrays
DPをいもすで高速化します。
E - Red and Blue Tree
辺ごとに通る回数をメモしてから、差が問題の条件を満たすようDPすればOKです。一回も通らないものは素直に2倍していきます。
F - Expensive Expense
全方位木DPです。
を根とする部分木で、からどこかへ観光しに行ったときにかかるコストの最大値、として計算します。
G - 222
離散対数問題のライブラリがバグっていてコンテスト中に通せませんでした。
漸化式の解き方をググって解くと、という式が出てきます。
これがの倍数になれば良いです。
少し変形すると、
となります。
あとはこれを満たす最小のを求めればOKです。