A. 物理課
發現每次反彈之后移動的距離是上一次的$d^2$倍。
計算出第一次反彈之前移動的距離的答案$k$,
總的答案即$\sum \limits_{i=0}^{inf}d^{2*i}*k$。
發現這個東西就是一個等比數列求和。
設答案為$s$,那么有$s=\sum \limits_{i=0}^{inf}d^{2*i}*k$
$d^2s=\sum \limits_{i=1}^{inf}d^{2*i}*k$
作差可得$(1-d^2)s=k$,即$s=\frac{k}{1-d^2}$。
這個東西似乎是生成函數中一個基本的式子。
B. 數學課
對於一個數$x$,如果它在集合$A$中,
那么$2*x$一定在集合$B$,由此又可得$4*x$也在集合$A$中。
所以只需要考慮每個奇數$x$在哪個集合中,決定了$x*2^k$在哪個集合中。
很多的奇數是等價的,也就是說它們決定的元素個數相同。
所以可以處理出每個等價類中有多少個元素,
對於每個奇數元素,如果它出現在集合A中,那么會對集合A貢獻a個元素。
如果它出現在集合B中,那么會對集合A貢獻b個元素。
可以將每個奇數元素視作一個物品,然后可以$O(n^2)$暴力背包$dp$。
然后發現本題存在一個特殊性質,即$abs(a-b)<=1$
因為每個物品必須選其中之一,不妨直接選入較小的一個。
如果二者貢獻的答案相同即等價,可以直接給答案$*2$。
因為差不超過$1$,可以直接用組合數算出選哪幾個可以構成合法的方案。
組合數的級別很大,但是模數提示可以用$lucas$定理,所以就解決了。
C. 地理課
維護動態聯通塊大小,可以離線。
部分分提示使用並查集,所以可以想到一個類似線段樹分治的過程。
即將每條邊加入它存在的區間的線段樹對應節點中。
之后不斷遞歸線段樹,開始遞歸時將數組記錄並加入邊,遞歸結束后將數組還原表示刪邊。
當遞歸到葉子節點,即貢獻統計完畢,可以直接輸出答案。
因為要進行還原操作,使用按秩合並並查集。
