A. Trippi Troppi
先頭の文字を結合
B. Bobritto Bandito
条件は $0$ を含み $[l,r]$ に含まれ長さが $m$ であること.
C. Brr Brrr Patapim
グリッドの値を拾ってきたあと $p_1$ だけ補間する必要があります.
D. Tung Tung Sahur
両方 run length encoding したとき,成分の個数は等しいことが必要で,あとは成分ごとに考えます.
E. Boneca Ambalabu
各 $k$ に対する sum をすべて求めることを考えます.これは桁ごとに独立に計算します.
桁ごとに考えると,$0$ の個数と $1$ の個数だけ持っておけば計算できます.
F. Trulimero Trulicina
$k$ の素因数 $p$ をとると,$n$ または $m$ は $p$ の倍数なので,$a_{i+j}=(i+j)\bmod p$ とすれば $0,1,\ldots,p-1$ が同じ回数ずつ現れるし,隣接も異なるようになります.
あとは $x$ を $x,x+p,x+2p,\ldots$ に置き換えていけばよいです.
G. Chimpanzini Bananini
split, reverse などのできる平衡二分木に適当なモノイドをのせればよいです.
H. La Vaca Saturno Saturnita
$a[i]=1$ は入力にない(あれば無視すればよい)ので除算の回数は $O(\log k)$ 回です.次に行われる除算の場所が十分高速にとれればよさそうです.
各 $x$ に対して $a[i]=x$ となる $i$ 全体の vector を保持しておけば,目的は $k$ の約数 $d$ を全探索して,それぞれに対して配列二分探索を行うことで達成できます.
約数の個数に除算回数・配列二分探索の $\log$ の類がつくので少し計算量が大きい気がしましたが十分余裕で通りました.よく見ると $Q$ は少し小さい.
テストケースごとに計算量 $\max(a)$ を使わないように注意.