poj 2528 離散化 線段樹經典題目)

2021-10-07 10:18:04 字數 1229 閱讀 8384

題意:

給一堆點,用一堆線段覆蓋,問能看得到多少類線段

思路:離散化,但這題是覆蓋點,所以對於對映前兩個距離大於1的點之間,需要新增乙個新的點,注意一下這裡要開的空間,實際上應該是16個1e4,但是我不知道**寫鍋了,要開32倍才能過,有大佬知道了之後希望能告訴我一下

#include

#include

#include

#include

#define lson p<<1,l,mid

#define rson p<<1|1,mid+1,r

#define ls p<<1

#define rs p<<1|1

using

namespace std;

const

int maxn=

1e4+10;

int lazy[maxn<<5]

,al[maxn]

,ar[maxn]

,n,a[maxn<<3]

;bool v[maxn]

;void

pushdown

(int p)

}int

query

(int p,

int l,

int r)

else

return0;

}if(l==r)

return0;

int mid=l+r>>1;

int ans=0;

ans+

=query

(lson)

; ans+

=query

(rson)

;return ans;

}void

update

(int p,

int l,

int r,

int l,

int r,

int x)

pushdown

(p);

int mid=l+r>>1;

if(l<=mid)

update

(lson,l,r,x);if

(r>mid)

update

(rson,l,r,x);}

intmain()

printf

("%d\n"

,query(1

,1,m));}

return0;

}

POJ2528 離散化線段樹

將資料離散化在使用線段樹 有一面牆,被等分為1qw份,乙份的寬度為乙個單位寬度。現在往牆上貼n張海報,每張海報的寬度是任意的,但是必定是單位寬度的整數倍,且 1qw。後貼的海報若與先貼的海報有交集,後貼的海報必定會全部或區域性覆蓋先貼的海報。現在給出每張海報所貼的位置 左端位置和右端位置 問張貼完n...

poj 2528 線段樹 離散化

題目連線 題目大意 在一面牆上貼海報,牆很長,後面貼上去的海報要覆蓋掉之前貼上去的海報,現在向牆上逐一的貼海報,問到最後牆上可以看見的海報有幾種?方法 線段樹,離散化 include include include include using namespace std define maxn 10...

poj2528(離散化 線段樹)

題意 在1 10 7的長度上貼海報,求能看到的海報數目 解題思路 10 7無論用樸素法或線段樹解都會超時超記憶體,所以要進行離散化。所謂離散化就是把有限的個體對映到有限的空間,以此提高演算法的時空效率以這題的測試資料為例,本題的五個區間為1 4,2 6,8 10,3 4,7 10 其中10和4出現了...