線段樹(li san hua)練習題一

2021-09-02 20:08:51 字數 649 閱讀 3033

桌子上零散地放著若干個盒子,桌子的後方是一堵牆。如右圖所示。現在從桌子的前方射來一束平行光, 把盒子的影子投射到了牆上。問影子的總寬度是多少?

20 //桌面總寬度

4 //盒子數量

1 53 8

7 10

13 19

資料範圍

1<=n<=100000,1<=m<=100000,保證座標範圍為[1,n].

先把所有端點座標從小到大排序,將座標值與其序號一一對應。這樣便可以將原先的座標值轉化為序號後,對其應用前一種演算法,再將最後結果轉化回來得解。

該方法對於線段數相對較少的情況有效,時間複雜度(n^2)。

#include#include#include#include#includeusing namespace std;

long long m,n,ans,b[100001][2],a[200001];

int main()

sort(a+1,a+2*n+1);

for(int i=2;i<=2*n;i++)

for(int j=1;j<=n;j++)

if (a[i]>b[j][1]&&a[i]<=b[j][2])

cout<

return 0;

}

線段樹練習題一

線段樹練習題一 description 桌子上零散地放著若干個盒子,桌子的後方是一堵牆。如右圖所示。現在從桌子的前方射來一束平行光,把盒子的影子投射到了牆上。問影子的總寬度是多少?分析 給線段樹每個節點增加乙個域cover。cover 1表示該結點所對應的區間被完全覆蓋,cover 0表示該結點所對...

線段樹 線段樹練習題一

桌子上零散地放著若干個盒子,桌子的後方是一堵牆。如右圖所示。現在從桌子的前方射來一束平行光,把盒子的影子投射到了牆上。問影子的總寬度是多少?第一行,乙個數m代表桌面寬度 第二行,乙個數n代表盒子數量 第2到n 2行,每行兩個數代表盒子開始與結束的位置 output 乙個數,影子的總寬度 sample...

線段樹練習題二

線段樹練習題二 description 桌子上零散地放著若干個不同顏色的盒子,桌子的後方是一堵牆。如右圖所示。問從桌子前方可以看到多少個盒子?假設人站得足夠遠 輸入時,由底向上,從左到右 分析 cover 0表示該區間由多種顏色組成。cover 0表示該區間只有一種單一的顏色cover,最後用個桶統...