[kuangbin带你飞]专题七 线段树 A HDU 1166
来源:互联网 发布:腾讯qq软件下载 编辑:程序博客网 时间:2024/06/02 05:29
题目地址:https://vjudge.net/contest/66989#problem/A
思路:这是我写的第一道线段树的题目,参考了一下其他大牛的代码,学习了一波。
AC代码:
#include<bits/stdc++.h>using namespace std;const int maxn=50000+5;int t;struct seg{ int l,r,n;}T[maxn*4];void build(int l,int r,int k)//建树{ int mid; if(l==r)//只有一个元素,节点记录该单元素 { T[k].l=l; T[k].r=r; T[k].n=0; return; } mid=(l+r)/2; T[k].l=l; T[k].r=r; T[k].n=0; build(l,mid,2*k);//递归构造左子树 build(mid+1,r,2*k+1);//递归构造右子树}void insert(int n,int d,int k)//更新{ int mid; if(T[k].l==T[k].r && T[k].l==d) { T[k].n+=n; return ; } mid=(T[k].l+T[k].r)>>1; if(d<=mid) insert(n,d,2*k);//在左子树 else insert(n,d,2*k+1); T[k].n=T[2*k].n+T[2*k+1].n;}int ans;void search(int l,int r,int k){ int mid; if(T[k].l==l && T[k].r==r) { ans+=T[k].n; return; } mid=(T[k].l+T[k].r)>>1; if(r<=mid) search(l,r,2*k); else if(l>mid) search(l,r,2*k+1); else { search(l,mid,2*k); search(mid+1,r,2*k+1); }}int main(){ scanf("%d",&t); int n; char str[11]; for(int casei=1;casei<=t;casei++) { scanf("%d",&n); build(1,n,1); for(int i=1;i<=n;i++) { int temp; scanf("%d",&temp); insert(temp,i,1); } printf("Case %d:\n",casei); while(scanf("%s",str),strcmp(str,"End")) { int a,b; scanf("%d%d",&a,&b); if(strcmp(str,"Add")==0) insert(b,a,1); else if(strcmp(str,"Sub")==0) insert(-b,a,1); else { ans=0; search(a,b,1); printf("%d\n",ans); } } }}
0 0
- [kuangbin带你飞]专题七 线段树 A HDU 1166
- [kuangbin带你飞]专题七 线段树 A
- [kuangbin带你飞]专题七 线段树
- [kuangbin带你飞]专题七 线段树 H HDU4027
- [kuangbin带你飞]专题七 线段树 B
- [kuangbin带你飞]专题七 线段树 C
- [kuangbin带你飞]专题七 线段树 E
- [kuangbin带你飞]专题七 线段树 F
- [kuangbin带你飞]专题七 线段树 【A、B、C、E、G、H】
- [kuangbin带你飞]专题七 线段树 B HDU 1754
- [kuangbin带你飞]专题七 线段树 E HDU 1698
- [kuangbin带你飞]专题七 线段树 I HDU 1540
- [kuangbin带你飞]专题七 线段树 J HDU 3974
- [kuangbin带你飞]专题七 线段树 H HDU-4027
- [kuangbin带你飞]专题七 线段树 ABCDE 题解,持续更新
- [kuangbin带你飞]专题七 线段树 C POJ 3468
- [kuangbin带你飞]专题七 线段树 D POJ 2528
- [kuangbin带你飞]专题七 线段树 G POJ 3264
- Linux命令 - chattr、lsattr
- maven的resources介绍
- 升级Xcode 8 及 iOS 10 之后,向AppStore提交应用时,出现Your app "xxx" has changed to Invalid Binary. 的解决办法
- Android中webview和js之间的交互
- iOS 10 And Xcode坑爹集锦
- [kuangbin带你飞]专题七 线段树 A HDU 1166
- HEVC的帧间预测解码(5)
- HTML5学习_day01(1)
- OCR图文识别软件在MS Office中创建PDF文件的方法
- 移植驱动到内核学习笔记2-----LED和按键驱动
- Iometer存储测试工具
- poj 1014解题报告 【动态规划】【背包问题】
- Android快速开发系列 10个常用工具类
- JavaScript强化教程——style、currentStyle、getComputedStyle区别介绍