1. 程式人生 > >【20181024T3】小C的宿舍【分治】

【20181024T3】小C的宿舍【分治】

lemp 得到 pan ali play 線段樹 nlog display clas

題面

【錯解】

好像就是\(|i-j|+|a_i - b_i|\)

嗯開始都加i-1,跑一遍,1~(i-1)加1,i~n 減1,線段樹維護。

過樣例了呢

哎大樣例怎麽多了那麽多啊

跑了個暴力,多得更多啊(霧

是不是數據有問……

woc好像有下去再上來的情況

打個暴力滾粗,30pts

【正解】

考慮分治

每次取mid遞歸

\[ mn_{x}=\left\{ \begin{aligned} min _{i=x}^{mid} \{h_{i}\} \qquad x \leq mid\ min _{i=mid+1}^{x} \{h_{i}\} \qquad x > mid \end{aligned} \right. \]

我們考慮i,j在mid兩邊。i,j的距離相當於\(h_i + h_j +j-i -2min\{mn[i],mn[j]\}\)

即我們要求\(h_i + h_j +j-i -2min\{mn_i,mn_j\} \leq k\)的點對數

挪一下就可以得到4個不等式

min看著很礙眼,考慮消掉

我們可以吧mn排序,這樣前面的mn一定大/小於後面的,即在前面mn和在後面的mn比較時一定前一個較大/小

這樣可以用平衡樹/權值線段樹/樹狀數組/二分查找(大霧)

然後分四種情況就可以了

復雜度\(O(Nlog_N^2)\)

代碼

【20181024T3】小C的宿舍【分治】