HDU 1166 敌兵布阵(线段树入门题)
来源:互联网 发布:手机电子书阅读软件 编辑:程序博客网 时间:2024/06/16 04:50
题意:中文题
思路:单点更新,区间求和的线段树入门题
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 50000+5; //线段树需要维护的信息int sum[maxn*4];#define lson i*2,l,m#define rson i*2+1,m+1,r//i结点收集子结点的统计结果 void PushUp(int i){sum[i]=sum[i*2]+sum[i*2+1];}//递归建立线段树void build(int i,int l,int r){if (l==r){scanf("%d",&sum[i]);return;}int m = (l+r)/2;build(lson);build(rson);PushUp(i); //收集子结点的结果}//在当前区间[l,r]内查询区间[ql,qr]间的目标值//且能执行这个函数的前提是:[l,r]与[ql,qr]的交集非空//本函数返回的结果也就是它们交集的目标值int query(int ql,int qr,int i,int l,int r){//目的区间包含当前区间if (ql <=l && qr>=r)return sum[i];int m = (l+r)/2;int ans = 0;if (ql <= m)ans+=query(ql,qr,lson);if (m < qr)ans+=query(ql,qr,rson);return ans;}//如果本题是单点更新,可以在区间[l,r]内使得第id数的值+val//如果本题是区间更新,可以updata的参数需要将id改为ql,qrvoid update(int id,int val,int i,int l,int r){if (l==r){sum[i]+=val;return;}int m = (l+r)/2;if (id <= m)update(id,val,lson);elseupdate(id,val,rson);PushUp(i); //时刻记得维护i结点统计信息的正确性}int main(){int T;int cas = 1;scanf("%d",&T);while (T--){printf("Case %d:\n",cas++); int n; //结点总数 scanf("%d",&n);build(1,1,n);char str[20];while (scanf("%s",str)!=EOF && str[0]!='E'){int u,v;scanf("%d%d",&u,&v);if (str[0]=='Q')printf("%d\n",query(u,v,1,1,n));else if (str[0]=='A')update(u,v,1,1,n);elseupdate(u,-v,1,1,n);}}}
0 0
- HDU 1166 敌兵布阵 线段树入门
- HDU 1166敌兵布阵-线段树入门
- hdu 1166 敌兵布阵(线段树入门题)
- HDU 1166 敌兵布阵 线段树/树状数组入门题
- hdu 1166 敌兵布阵(线段树入门第一题)
- HDU 1166 敌兵布阵(线段树入门题)
- HDU 1166 敌兵布阵 线段树入门(线段树)
- 线段树入门[单点更新] 敌兵布阵 HDU 1166
- hdu 1166 敌兵布阵(线段树入门)
- HDU 1166 敌兵布阵 线段树入门题目
- HDU 1166 敌兵布阵(线段树入门,单点更新)
- hdu 1166 敌兵布阵(线段树入门)
- hdu 1166 敌兵布阵(线段树入门-单点更新)
- HDU 1166 敌兵布阵 线段树入门_单点更新
- HDU 1166:敌兵布阵(线段树入门)
- hdu 1166 敌兵布阵【入门线段树 & 树状数组】
- 敌兵布阵 线段树入门第一题
- 线段树入门题 hdu1166 敌兵布阵
- Android中Context、ApplicationContext的用法及总结
- [BZOJ1180] [CROATIAN2009]OTOCI
- 程序员的修炼之路
- UIColectionView实现无限滚动(图片轮播)
- [Python入门]Chapter6 函数
- HDU 1166 敌兵布阵(线段树入门题)
- Struts2之拦截器
- stty 终端环境设置
- 开场白
- 新安装CCS 编译问题Process_begin :createProcess
- 一只猿的起步点
- Matlab的autocorr自相关函数
- lua学习Day03
- Ubuntu linux 关机、重启、注销 命令