hdu - 1754
模板,單點更新,區間查詢
1 #include 2 #include 3 #includeview code4 #include 5 #include
6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12
#define lson l,m,rt<<1
13#define rson m+1,r,rt<<1|1
14using
namespace
std;
15const
double pi=3.14159265358979323846
;16 typedef long
long
ll;17
const
int dx[5]=;
18const
int dy[5]=;
19const
int inf = 0x3f3f3f3f;20
const
int ninf = 0xc0c0c0c0;21
const
int maxn=200000+5;22
const ll mod=1e9+7;23
int tree[maxn<<2
];24
//向上更新
25void pushup(int
rt)28
//建樹
29void build(int l,int r,int
rt)34
int m=(l+r)>>1;35
build(lson);build(rson);
36pushup(rt);
37}
38//
單點更新
39void update(int p,int add,int l,int r,int
rt)44
int m=(l+r)>>1;45
if(p<=m) update(p,add,lson);
46else
update(p,add,rson);
47pushup(rt);
48}
49//
區間查詢
50int query(int l,int r,int l,int r,int
rt)54
int m=(l+r)>>1;55
int ret=ninf;
56if(l<=m) ret=max(ret,query(l,r,lson));
57if(r>m) ret=max(ret,query(l,r,rson));
58return
ret;
59}
6061
intmain()
6274}75
return0;
76 }
poj - 3468
這個題呀,錯了個符號,調了半天。區間修改加區間查詢
1 #include 2 #include 3 #includeview code4 #include 5 #include
6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12
#define lson l,m,rt<<1
13#define rson m+1,r,rt<<1|1
14using
namespace
std;
15const
double pi=3.14159265358979323846
;16 typedef long
long
ll;17
const
int dx[5]=;
18const
int dy[5]=;
19const
int inf = 0x3f3f3f3f;20
const
int ninf = 0xc0c0c0c0;21
const
int maxn=100000+5;22
const ll mod=1e9+7;23
24 ll tree[maxn<<2
];25 ll add[maxn<<2
]; 26
//向上更新
27void pushup(int
rt)30
//向下更新
31void pushdown(int rt,int
m)39}40
//建樹
41void build(int l,int r,int
rt)47
int m=(l+r)>>1;48
build(lson);build(rson);
49pushup(rt);
50}
51//
單點更新
52void updatepoint(int p,int add,int l,int r,int
rt)57 pushdown(rt,r-l+1
);58
int m=(l+r)>>1;59
if(p<=m) updatepoint(p,add,lson);
60else
updatepoint(p,add,rson);
61pushup(rt);
62}
63//
區間更新
64void updatequery(int l,int r,int c,int l,int r,int
rt)70 pushdown(rt,r-l+1
);71
int m=(l+r)>>1;72
if(l<=m) updatequery(l,r,c,lson);
73if(r>m) updatequery(l,r,c,rson);
74pushup(rt);
75}
76//
區間查詢
77 ll query(int l,int r,int l,int r,int
rt)81 pushdown(rt,r-l+1
);82
int m=(l+r)>>1
;83 ll ret=0;84
if(l<=m) ret+=query(l,r,lson);
85if(r>m) ret+=query(l,r,rson);
86return
ret;
87}
88int
main()
89else
103
107}
108return0;
109 }
簡單線段樹模板
入門第四天,前三天的沒時間補,回去再慢慢寫吧。今天學長講的是線段樹,講得很有老師的感覺.然後就是講的也都差不多聽懂了,只是有些細節在寫 的時候沒有注意到,一直錯。需要注意的點 1.在build的時候在left right時是node u a left 之前老是錯寫成node left a left ...
hdu 1556 簡單線段樹
漢語題,不解釋 思路 此題是線段樹的染色,先分段染色,可以nlogn級別,在算出每個位置的染色數 求染色數的時候,有兩種方法 1,用乙個數記錄step的值,之後除以2,把每個值相加,直到為一時結束 為從下向上尋找 2,用遞迴,從上往下尋找 下面是我的2 include include include...
HDU 1754 簡單線段樹
題意如下 給你從1到n 每個學生的成績。有m個操作,操作分為兩種,一種是查詢q x y 查詢從x學生到y學生的最高分數 另一種就是u x y 將學生x的成績改為y 一道明顯的線段樹題目 過程也是比較明確,建樹 查詢最大值 更新樹.附上 include include include define m...