1. 程式人生 > >【自創模擬賽】set1 題解

【自創模擬賽】set1 題解

T2

本來想在 $T2$ 搞一道動態規劃題,但現在好像不是了……出成了一道毒瘤結論題。

題目背景和板子啥的來源於我以前在luogu存的一道自創題。

100pts

這個點甚至卡 $O(n*log(n^2))$,而二分肯定是不能去掉的,所以我們考慮去掉鏈上對區間答案的維護的那一維 $log$。

我們重新分開考慮兩個點的大小關係,以防混淆。

當祖先 $\lt M$,子孫 $\gt M$ 時,

我們發現,一次移動只有兩個點的歸屬發生變化,橙點被加入可利用區域,紅點被加入已分完區域。

所以 $place$(橙點)的變化量為 $val_{orange}-val_{red}$。

關鍵就在這個變化量,怎麼存這玩意?它跟紅橙兩點都有關係。

其實兩點的距離 $x$ 是確定的,所以只要知道祖先(橙點)的位置,子孫(紅點)的值就可以唯一對應地存。

當然我用了一種比較鬼畜的方法:再維護一個 $sum$,表示以子孫(紅點)為根的子樹中所有數的總和是多少。