HDU 1166 敌兵布阵 树状数组-(模板)
2016-09-20 16:29
337 查看
这道题是很简单的树状数组和线段树的题目,理解一下树状数组怎么用~
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,num[50050];
int lowbit(int t) {
return t & (-t);
}
void add(int t,int number) {
while(t <= n) {
num[t] += number;
t += lowbit(t);
}
}
int getsum(int t) {
int sum = 0;
while(t > 0) {
sum += num[t];
t -= lowbit(t);
}
return sum;
}
int main() {
int t,cnt = 1;
scanf("%d",&t);
while(t--) {
printf("Case %d:\n",cnt++);
scanf("%d",&n);
int x,a,b;
for(int i = 1;i <= n;i++) {
scanf("%d",&x);
add(i,x);
}
char str[20];
while(scanf("%s",str) && str[0] != 'E') {
scanf("%d%d",&a,&b);
if(str[0] == 'A')
add(a,b);
else if(str[0] == 'S')
add(a,-b);
else
printf("%d\n",getsum(b) - getsum(a-1)); //这里注意减去后面的前缀和是a-1!
主要就是利用了lowbit的性质,写起来比线段树方便写~~
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,num[50050];
int lowbit(int t) {
return t & (-t);
}
void add(int t,int number) {
while(t <= n) {
num[t] += number;
t += lowbit(t);
}
}
int getsum(int t) {
int sum = 0;
while(t > 0) {
sum += num[t];
t -= lowbit(t);
}
return sum;
}
int main() {
int t,cnt = 1;
scanf("%d",&t);
while(t--) {
printf("Case %d:\n",cnt++);
scanf("%d",&n);
int x,a,b;
for(int i = 1;i <= n;i++) {
scanf("%d",&x);
add(i,x);
}
char str[20];
while(scanf("%s",str) && str[0] != 'E') {
scanf("%d%d",&a,&b);
if(str[0] == 'A')
add(a,b);
else if(str[0] == 'S')
add(a,-b);
else
printf("%d\n",getsum(b) - getsum(a-1)); //这里注意减去后面的前缀和是a-1!
} } }
主要就是利用了lowbit的性质,写起来比线段树方便写~~
相关文章推荐
- HDU 1166 敌兵布阵 (我的树状数组加线段树点修改模板)
- HDU 1166 敌兵布阵(树状数组模板)
- 整理的树状数组模板 & 敌兵布阵 HDU - 1166
- HDU 1166 敌兵布阵【树状数组】
- hdu_1166 敌兵布阵(树状数组)
- HDU 1166 敌兵布阵(树状数组)
- HDU-1166-敌兵布阵(树状数组)
- 树状数组:HDU1166敌兵布阵 【单点更新,区间查询】
- hdu - 1166 - 敌兵布阵(树状数组)
- hdu 1166 敌兵布阵 (树状数组)
- 树状数组-再说敌兵布阵(HDU 1166)
- 【树状数组 + 简单题】杭电 hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵 树状数组求区间和和修改点的值
- hdu 1166 敌兵布阵 (树状数组)
- HDU-1166 敌兵布阵-树状数组
- (树状数组) hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵 (树状数组)
- hdu 1166 敌兵布阵(水...线段树&&树状数组)
- HDU 1166 敌兵布阵 我的第一棵树,线段树,树状数组。
- HDU 1166 敌兵布阵 树状数组解法