poj 2528 線段樹成段更新 離散化

2021-06-10 03:23:44 字數 2102 閱讀 7342

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define iinf 2000000000

#define linf 1000000000000000000ll

#define dinf 1e200

#define eps 1e-5

#define all(v) (v).begin(),(v).end()

#define sz(x) x.size()

#define pb push_back

#define mp make_pair

#define lng long long

#define sqr(a) ((a)*(a))

#define pii pair#define pll pair#define pss pair#define pdd pair#define x first

#define y second

#define pi 3.14159265359

#define ff(i,xi,n) for(int i=xi;i<=(int)(n);++i)

#define ffd(i,xi,n) for(int i=xi;i>=(int)(n);--i)

#define ffl(i,r) for(int i=head[r];i!=-1;i=edge[i].next)

#define cc(i,j) memset(i,j,sizeof(i))

#define two(x) ((lng)1<<(x))

#define n 11111

#define m 1000000

#define lson l , mid , rt << 1

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

#define mod n

#define pmod(x) (x%mod+mod)%mod

using namespace std;

typedef vectorvi;

typedef vectorvs;

typedef unsigned int uint;

typedef unsigned lng ulng;

templateinline void checkmax(t &x,t y)

templateinline t min(t x,t y)

templateinline t max(t x,t y)

templatet lcm(t a,t b)

templatet abs(t a)

templateinline t lowbit(t n)

templateinline int countbit(t n)

templateinline bool isprimenumber(t n)

struct ps

s[2*n];

int le[n],ri[n],clo[n<<4],n,ncase,y,cnt;

bool in[n];

bool cmp(ps p,ps q)

void query(int l,int r,int rt)

int mid=(l+r)>>1;

if (l==r) return ;

query(lson);

query(rson);

}int main()

sort(s+1,s+2*n+1,cmp);

s[0].val=-iinf;

cc(le,0);

ff(i,1,2*n)

else

if(i>=2&&s[i].val>s[i-1].val+1)

else

}cc(clo,0);

cc(in,0);

cnt=0;

ff(i,1,n)

update(le[i],ri[i],i,1,y,1);

query(1,y,1);

printf("%d\n",cnt);

}return 0;

}

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出現了...