H - 敌兵布阵
2016-07-30 14:19
134 查看
Description
Lily 特别喜欢养花,但是由于她的花特别多,所以照料这些花就变得不太容易。她把她的花依次排成一行,每盆花都有一个美观值。如果Lily把某盆花照料的好的话,这盆花的美观值就会上升,如果照料的不好的话,这盆花的美观值就会下降。有时,Lily想知道某段连续的花的美观值之和是多少,但是,Lily的算术不是很好,你能快速地告诉她结果吗?
Input
Output
Sample Input
1
9
7 9 8 4 4 5 4 2 7
Query 7 9
Add 4 9
Query 3 6
Sub 9 6
Sub 3 3
Query 1 9
End
Sample Output
Case 1:
133050
题意:中文,你懂得。。
解法:树状数组,ko
Lily 特别喜欢养花,但是由于她的花特别多,所以照料这些花就变得不太容易。她把她的花依次排成一行,每盆花都有一个美观值。如果Lily把某盆花照料的好的话,这盆花的美观值就会上升,如果照料的不好的话,这盆花的美观值就会下降。有时,Lily想知道某段连续的花的美观值之和是多少,但是,Lily的算术不是很好,你能快速地告诉她结果吗?
Input
第一行一个整数T,表示有T组测试数据。 每组测试数据的第一行为一个正整数N(N<=50000),表示Lily有N盆花。接下来有N个正整数,第i个正整数ai表示第i盆花的初始美观值(1<=ai<=50)。 接下来每行有一条命令,命令有4种形式: (1)Add i j, i和j为正整数,表示第i盆花被照料的好,美观值增加j(j<=30) (2)Sub i j, i和j为正整数,表示第i盆花被照料的不好,美观值减少j(j<=30) (3)Query i j, i和j为正整数,i<=j,表示询问第i盆花到第j盆花的美观值之和 (4)End,表示结束,这条命令在每组数据最后出现 每组数据的命令不超过40000条
Output
对于第i组数据,首先输出"Case i:"和回车。 对于每个"Query i j"命令,输出第i盆花到第j盆花的美观值之和。
Sample Input
1
9
7 9 8 4 4 5 4 2 7
Query 7 9
Add 4 9
Query 3 6
Sub 9 6
Sub 3 3
Query 1 9
End
Sample Output
Case 1:
133050
题意:中文,你懂得。。
解法:树状数组,ko
<span style="font-size:18px;">#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int c[50010]; struct node { char name[7]; int x; int y; }now; int n,m,i,t=0,a; int lowbit(int k) { return k&(-k); } void add1(int i,int num)//花增值 { while(i<=n) { c[i]+=num; i+=lowbit(i); } } void add2(int i,int num)//花降值 { while(i<=n) { c[i]-=num; i+=lowbit(i); } } int read(int i)//查询和 { int sum=0; while(i) { sum+=c[i]; i-=lowbit(i); } return sum; } int main() { scanf("%d",&m); while(m--) { memset(c,0,sizeof(c)); t++; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a); add1(i,a); } printf("Case %d:\n",t); now.name[0]='p'; while(1) { scanf("%s",&now.name); if(now.name[0]=='E') break; scanf("%d%d",&now.x,&now.y); i=now.x; int j=now.y; if(now.name[0]=='Q') printf("%d\n",read(j)-read(i-1)); if(now.name[0]=='A') add1(i,j); if(now.name[0]=='S') add2(i,j); } } return 0; }</span>
相关文章推荐
- Codeforces Coder-Strike 2014 - Finals (online edition, Div. 1)
- HDU 1166 敌兵布阵
- POJ 2352 Stars
- PAT 1057 Stack (30)
- neu 1438 树状数组求逆序数
- poj 2352
- 树状数组
- 树状数组 Binary Indexed Tree
- hdu 4630 No Pain No Game 树状数组
- 树状数组区间求和的三种模型
- HDOJ1166 敌兵布阵 树状数组
- 二维树状数组
- Hoj 2275 Number Sequence
- POJ3321 Apple Tree
- BZOJ2434 [Noi2011]阿狸的打字机【AC自动机+dfs序+树状数组】
- [离散化+树状数组]逆序对
- HDU 3015
- hdu 5147
- 求逆序数
- 树状数组