码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-10-24 22:29:47      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:inline   his   ble   lemp   复杂   begin   递归   play   复杂度   

题面

【错解】

好像就是\(|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的宿舍【分治】

标签:inline   his   ble   lemp   复杂   begin   递归   play   复杂度   

原文地址:https://www.cnblogs.com/lstoi/p/9845622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!