題意:給出n個數,a1,a2,a3,,,,,an,再給出一些操作
add i j 表示給第i個節點增加j
sub i j 表示給第i個節點減少j
query i j 表示詢問第i個節點到第j個節點的和
套的別人的模板寫的---還是要再多自己寫寫的說-------
1 #include2 #include3 #include4 #include 5 #include6 #include7 #include8 #includeview code9 #include10 #include11
using
namespace
std;
1213 typedef long
long
ll;14
const
int inf = (1
<<30)-1;15
const
int mod=1000000007;16
const
int maxn=1000005;17
18int
a[maxn];
1920
struct
node;
2425 node tree[4*maxn];
2627
int calc(int x,int y)
2829
void build_tree(int i,int l,int
r)36
int mid=(l+r)/2
;37 build_tree(2*i,l,mid);
38 build_tree(2*i+1,mid+1
,r);
39 tree[i].l=l;
40 tree[i].r=r;
41 tree[i].s=calc(tree[2*i].s,tree[2*i+1
].s);42}
4344
void update1(int i,int s,int
w)49
int mid=(tree[i].l + tree[i].r)/2;50
if(s<=mid) update1(2*i,s,w);
51else update1(2*i+1
,s,w);
5253 tree[i].s=calc(tree[2*i].s,tree[2*i+1
].s);54}
5556
void update2(int i,int s,int
w)61
int mid=(tree[i].l + tree[i].r)/2;62
if(s<=mid) update2(2*i,s,w);
63else update2(2*i+1
,s,w);
6465 tree[i].s=calc(tree[2*i].s,tree[2*i+1
].s);66}
6768
int sum(int i,int l,int
r)73
else80}
8182
intmain()
104if(s[0]=='s'
)108
if(s[0] == 'q'
)112
}
113}
114return0;
115 }
HDU 1166 敵兵布陣 線段樹
第一道線段樹的題目,正在學習中 include include include using namespace std define max 55555 int sum max 2 n void pushup int rt void build int l,int r,int rt int mid ...
hdu1166敵兵布陣 線段樹
problem description c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的...
A 敵兵布陣 線段樹 hdu 1166
a 敵兵布陣 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status practice hdu 1166 description c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek...