思路:
1e9嘛..賽中沒有動態開點的板子,手寫調1小時多最後mle,麻了。第二天改了動態的寫法,然後re。瘋狂re。剛剛改出來re70分。
先放離散化的寫法吧。(真的方便很多..賽中為什麼想不開阿)
#include#include#include#include#include#include#include#include#include#define debug(a) cout<<#a<<"="<>1;
build(p*2,l,mid);
build(p*2+1,mid+1,r);
push_up(p);
}void modify(ll p,ll l,ll r,ll d)
push_down(p);
ll mid=(tree[p].l+tree[p].r)>>1;
if(l<=mid) modify(p*2,l,r,d);
if(r>mid) modify(p*2+1,l,r,d);
push_up(p);
}ll query(ll p,ll l,ll r)
push_down(p);
ll mid=(tree[p].l+tree[p].r)>>1;
ll ans=1;
if(l<=mid) ans=max(ans,query(p*2,l,r));
if(r>mid) ans=max(ans,query(p*2+1,l,r));
return ans;
}int main(void)
else if(q[i].op==2)
a[++tot]=q[i].l;
a[++tot]=q[i].r;
}sort(a+1,a+1+tot);
ll siz=unique(a+1,a+1+tot)-a-1;
build(1,1,siz);
for(ll i=1;i<=m;i++)
else if(q[i].op==2)
}void push_up(ll now)
ll times=0;
void update(ll now,ll l,ll r,ll d)
ll mid=(tree[now].l+tree[now].r)>>1;
// times++;
// debug(mid);
/* if(times>=10)*/
//if(tree[now].l!=tree[now].r)
if(r>mid)
//}push_up(now);
}ll query(ll now,ll l,ll r)
ll mid=(tree[now].l+tree[now].r)>>1;
ll ans=1;
if(l<=mid) ans=max(ans,query(tree[now].lson,l,r));
if(r>mid) ans=max(ans,query(tree[now].rson,l,r));
return ans;
}int main(void)
else if(op==2)
}}
離散化問題
題目傳送 uvalive 4127 the sky is the limit 大白書離散化簡單題。找了半天錯誤,居然是少輸出乙個空行。頓時感覺自己萌萌噠。其中計算幾何是套的之前留下的模板。ac include include include include include include inclu...
Vijos p1002 過河 離散化距離 區間DP
題意 一條長度為l l 1e9 的橋上有n 1 n 100 顆石頭。橋的起點為0終點為l.乙隻青蛙從0開始跳,每次跳的長度在s,t 1 s t 10 之間。問青蛙過河最少踩到的石頭的數量?思路 區間dp的感覺很強烈。但是範圍實在是太大了。並且有一種感覺就是當兩顆相鄰的石頭之間的距離相距很遠時,其中間...
POJ2528 海報問題 線段樹 離散化
有一兩年沒有搞了,有點生疏,這道題目是線段樹的,以前在學校搞過,搞這道題目第二天才搞出來,而且參考了另外的解題報告。問題的抽象如下,給定一條數軸,長度為 l 1千萬單位,然後在數軸上的某些區間染色,第i次對區間染色為i,共染色n 10000次。給出每次染色的區間,問最後能看見多少種顏色。線段樹處理染...