线段树-区间的交
區間的交
題目來源
孫耀峰Segment_Tree.pdf 原創
題目描述
- 給定nnn個區間,[li,ri][l_i,r_i][li?,ri?],可以選出其中一些區間,設選出tottottot個,令xxx表示這tottottot個區間交的長度.
- 求min{x,tot}min\{x,tot\}min{x,tot}
- n≤105,1≤xi≤yi≤nn \le 10^5,1 \le x_i \le y_i \le nn≤105,1≤xi?≤yi?≤n
題目解答
我們發現當tottottot增大時xxx會減小,具有單調性.
我們把線段看成是平面上二維的點(l,r)(l,r)(l,r).
那么我們考慮從小到大枚舉線段的交的右端點RRR,如果,交線段的長度為xxx,那么交線段左端點就是L=R?x+1L=R-x+1L=R?x+1,而所有包含這個交線段的線段(此時被表示成了數點)我們可以用一顆線段樹來維護,因此我們可以很快的在線段樹上找到所有l≤L且r≥Rl \le L 且 r \ge Rl≤L且r≥R的點的個數,這些個數就是tottottot.
考慮到x=R?L+1x = R-L+1x=R?L+1是一個關于LLL減函數,而tottottot則是關于LLL的增函數.
也就是說,隨著LLL的增大,xxx在增大,tottottot在減小,則顯然答案min{x,tot}min\{x,tot\}min{x,tot}在滿足x≤totx \le totx≤tot最大的LLL時取得最大值tottottot.
考慮到單調性,我們使用二分法,可以很快的找到對于一個RRR,滿足x≤totx \le totx≤tot最大的LLL.
原題解
下面是孫耀峰聚聚的題解
總結
- 上一篇: 电脑虚拟机对电脑配置有影响吗(电脑虚拟机
- 下一篇: 线段树-Chossing Ads-分治,