20181024T3小C的宿舍分治

Posted lstoi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20181024T3小C的宿舍分治相关的知识,希望对你有一定的参考价值。

题面

【错解】

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

嗯开始都加i-1,跑一遍,1~(i-1)加1,i~n 减1,线段树维护。

过样例了呢

哎大样例怎么多了那么多啊

跑了个暴力,多得更多啊(雾

是不是数据有问……

woc好像有下去再上来的情况

打个暴力滚粗,30pts

【正解】

考虑分治

每次取mid递归

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

我们考虑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的宿舍分治的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法-进阶(十九)分治

小C秋招面试算法题:合并k个有序数组合并k个有序链表(分治思想)

小C秋招面试算法题:合并k个有序数组合并k个有序链表(分治思想)

小C秋招面试算法题:合并k个有序数组合并k个有序链表(分治思想)

cdq分治浅谈

2.3.2 分析分治算法