【杭电】[1166]敌兵布阵
2016-04-01 23:22
429 查看
线段数组的应用
很神奇的一个算法
应用于单点修改和区间求和
先记住吧……
#include<stdio.h> #include<string.h> int a[50200]; int n; void add(int k,int m) { while(k<=n) { a[k]+=m; k+=k&-k; } } int res(int k) { int sum=0; while(k) { sum+=a[k]; k-=k&-k; } return sum; } int main() { int T,kase=0; scanf("%d",&T); while(T--) { memset(a,0,sizeof(a)); printf("Case %d:\n",++kase); scanf("%d",&n); for(int i=1; i<=n; i++) { int t; scanf("%d",&t); add(i,t); } char s[10]; while(scanf("%s",s),s[0]!='E') { int x,y; scanf("%d %d",&x,&y); if(s[0]=='Q') printf("%d\n",res(y)-res(x-1)); else if(s[0]=='A') add(x,y); else if(s[0]=='S') add(x,-y); } } return 0; }
题目地址:【杭电】[1166]敌兵布阵
相关文章推荐
- 高精度加法——杭电1002
- Hdu2066(一个人的旅行)
- 杭电1870 愚人节的礼物
- 关于杭电1405 The Last Practice 的问题
- hdu-1103 模拟题。
- hdu-1022 栈的应用。
- hdu-1247 简单map的应用。(字典树)
- hdu-1251 字典树公共前缀。
- hdu-1075 map映射表的应用。
- 杭电ACM Steps (1)
- hdu 1005 -- Number Sequence
- hdu 1007 -- Quoit Design
- 杭电1004
- 杭电1005
- 杭电1008
- c++编写藏手帕问题
- 杭电oj-1003
- 杭电oj-1004
- 杭电oj-1005
- 并查集示例1