博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1166 敌兵布阵
阅读量:4993 次
发布时间:2019-06-12

本文共 2528 字,大约阅读时间需要 8 分钟。

http://acm.hdu.edu.cn/showproblem.php?pid=1166

1 #include 
2 #include
3 #include
4 #define maxn 50010 5 using namespace std; 6 7 int a[maxn]; 8 struct node 9 { 10 int l,r; 11 int sum; 12 }tree[maxn*4]; 13 14 void build(int i,int l,int r) 15 { 16 tree[i].l=l; 17 tree[i].r=r; 18 if(l==r) 19 { 20 tree[i].sum=a[l]; 21 return ; 22 } 23 int mid=(l+r)>>1; 24 build(i<<1,l,mid); 25 build(i<<1|1,mid+1,r); 26 tree[i].sum=tree[i<<1].sum+tree[i<<1|1].sum; 27 } 28 29 void add1(int i,int l,int r,int add) 30 { 31 if(tree[i].l==l&&tree[i].r==r) 32 { 33 tree[i].sum+=add; 34 return ; 35 } 36 int mid=(tree[i].l+tree[i].r)>>1; 37 if(r<=mid) 38 { 39 add1(i<<1,l,r,add); 40 } 41 else if(l>mid) 42 { 43 add1(i<<1|1,l,r,add); 44 } 45 else 46 { 47 add1(i<<1,l,mid,add); 48 add1(i<<1|1,mid+1,r,add); 49 } 50 tree[i].sum=tree[i<<1].sum+tree[i<<1|1].sum; 51 } 52 53 int search1(int i,int l,int r) 54 { 55 if(tree[i].l==l&&tree[i].r==r) 56 { 57 return tree[i].sum; 58 } 59 int mid=(tree[i].l+tree[i].r)>>1; 60 if(r<=mid) 61 { 62 return search1(i<<1,l,r); 63 } 64 else if(l>mid) 65 { 66 return search1(i<<1|1,l,r); 67 } 68 else 69 { 70 return (search1(i<<1,l,mid)+search1(i<<1|1,mid+1,r)); 71 } 72 } 73 74 int main() 75 { 76 int T,N,aa,bb; 77 char s1[maxn]; 78 scanf("%d",&T); 79 int case1=0; 80 while(T--) 81 { 82 scanf("%d",&N); 83 for(int i=1; i<=N; i++) 84 { 85 scanf("%d",&a[i]); 86 } 87 build(1,1,N); 88 printf("Case %d:\n",++case1); 89 while(1) 90 { 91 scanf("%s",s1); 92 if(!strcmp(s1,"Add")) 93 { 94 scanf("%d%d",&aa,&bb); 95 add1(1,aa,aa,bb); 96 } 97 else if(!strcmp(s1,"Query")) 98 { 99 scanf("%d%d",&aa,&bb);100 printf("%d\n",search1(1,aa,bb));101 }102 else if(!strcmp(s1,"Sub"))103 {104 scanf("%d%d",&aa,&bb);105 add1(1,aa,aa,-bb);106 }107 else if(!strcmp(s1,"End")) break;108 }109 }110 return 0;111 }
View Code

 

转载于:https://www.cnblogs.com/fanminghui/p/3578960.html

你可能感兴趣的文章
深入懂得android view 生命周期
查看>>
android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
查看>>
Android 中 更新视图的函数ondraw() 和dispatchdraw()的区别
查看>>
《Java源码解析》之NIO的Selector机制(Part1:Selector.open())
查看>>
webpack安装问题
查看>>
Qt学习记录--Qt::CaseSensitive
查看>>
你的灯还亮着吗阅读笔记之一
查看>>
python介绍
查看>>
Unity-Editor按钮和菜单显示
查看>>
SharePoint InfoPath 保存无法发布问题
查看>>
word2vec:主要概念和流程
查看>>
Java - MyBites 逆向工程
查看>>
104. Maximum Depth of Binary Tree
查看>>
Python--变量作用域
查看>>
2017-2018-1 20155235 《信息安全系统设计基础》第九周学习总结
查看>>
!!和??
查看>>
matlab演奏卡农 Cripple Pachebel's Canon on Matlab
查看>>
apache的MPM机制-prefork
查看>>
js的一些实用的小技巧
查看>>
vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
查看>>