ABC220
$ \left\lfloor \frac{B}{C} \right\rfloor * C \geq A なら左辺が解。だめなら-1。
以上ではなく”超える”。
周回する分は$ \left\lfloor \frac{X}{\sum_{i=1}^N{A_i}} \right\rfloor。
残りは愚直に一周する。
$ DP \lbrack i \rbrack \lbrack j \rbrack =$ i回目まで操作したとき、左端が$ jになる通り数。
https://scrapbox.io/files/6151c01873c814001ff593b6.png
E問題は、「距離がDの頂点の組(i,j)で、i,jのLCAが頂点vであるもの」の個数をvごとに求めて足せばいいのだ!」 $ kが満たすべき条件は、
①$ 0 < k < D
→$ 1 \leq k \leq D-1
②$ d + k \leq N-1
→$ k \leq N-1-d
③$ d + D - k \leq N-1
→$ k \geq d + D - (N-1)
よって
$ max(1, d+D-(N-1)) \leq k \leq min(D-1, N-1-d)
$ kの通り数は
$ min(D-1, N-1-d) - max(1, d+D-(N-1)) +1
部分木のサイズで調整しながら遷移する。ある頂点から根方向に行くとき、(その頂点を根とする部分木)に属する頂点は遠ざかり、残りは近づく。葉方向ならその逆。