/* ***********************************************
Author        :xryz
Email         :523689985@qq.com
Created Time  :4-22 20:46:48
File Name     :hdu排兵布阵.cpp
************************************************ */#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;int c[50000+5];
int lowbit (int x)
{return x&-x;
}
int sum(int x)
{int ret=0;while(x>0){ret+=c[x];x-=lowbit(x);}return ret;
}void add(int x,int d,int n)
{while(x<=n){c[x]+=d;x+=lowbit(x);}
}int main()
{int t,i,n,j,m,tmp1,tmp2;char s[24];scanf("%d",&t);for(int ii=1;ii<=t;ii++){scanf("%d",&n);memset(c,0,sizeof(c));for(i=1;i<=n;i++){scanf("%d",&m);add(i,m,n);}printf("Case %d:\n",ii);while(~scanf("%s",s)){if(strcmp(s,"End")==0) break;if(s[0]=='A') {scanf("%d%d",&i,&j);add(i,j,n);}else if(s[0]=='Q'){scanf("%d%d",&i,&j);if(i>1) {i--;tmp1=sum(i);}else tmp1=0;tmp2=sum(j);printf("%d\n",tmp2-tmp1);}else if(s[0]=='S'){scanf("%d%d",&i,&j);add(i,-j,n);}}}return 0;
}

线段树

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
struct node
{int left,right,sum;
} tree[200000+5];int a[50000+5];void make(int id,int l,int r)//建树
{tree[id].left=l;tree[id].right=r;if(l==r){tree[id].sum=a[l];}else{int mid=(l+r)/2;make(id*2,l,mid);make(id*2+1,mid+1,r);tree[id].sum=tree[id*2].sum+tree[id*2+1].sum;}
}void add(int id,int pos,int d)//单点更新
{tree[id].sum+=d;if(tree[id].left==tree[id].right) return ;int mid=(tree[id].left+tree[id].right)/2;if(pos>mid) add(id*2+1,pos,d);else add(id*2,pos,d);}int query(int l,int r,int id)//查询
{if(tree[id].left==l&&tree[id].right==r)return tree[id].sum;else{int mid=(tree[id].left+tree[id].right)/2;if(r<=mid) return query(l,r,id*2);else if(l>mid) return query(l,r,id*2+1);elsereturn query(l,mid,id*2)+query(mid+1,r,id*2+1);}
}int main()
{int T,i,n,j,l,r;char s[10];scanf("%d",&T);for(int k=1; k<=T; k++){scanf("%d",&n);a[0]=0;for(i=1; i<=n; i++) scanf("%d",&a[i]);make(1,1,n);printf("Case %d:\n",k);while(~scanf("%s",s)){if(strcmp(s,"End")==0) break;else if(strcmp(s,"Add")==0){scanf("%d%d",&i,&j);add(1,i,j);}else if(strcmp(s,"Sub")==0){scanf("%d%d",&i,&j);add(1,i,-j);}else{scanf("%d%d",&i,&j);int ans=query(i,j,1);printf("%d\n",ans);}}}return 0;
}

hdu 1166 排兵布阵相关推荐

  1. hdu 1166 敌兵布阵(单点更新)

    hdu 1166 敌兵布阵(基本操作) 有三种操作:询问区间总和,增加某个兵营的兵的数目,减少某个兵营的兵的数目.实际上也只有两个. 在更新的时候,每到一个区间就把当前区间的sum增加对应的数目,到达 ...

  2. HDU 1166 敌兵布阵(线段树:点更新,区间求和)

    HDU 1166 敌兵布阵(线段树:点更新,区间求和) http://acm.hdu.edu.cn/showproblem.php?pid=1166 题意: 给你n个整数,然后给你多条命令,每条命令如 ...

  3. 树状数组板子题之一:hdu 1166 敌兵布阵

    树状数组板子题之一:hdu 1166 敌兵布阵 题目链接:hdu 1166 敌兵布阵 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手 ...

  4. hdu 1166 敌兵布阵 (线段树)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  5. HDU 1166 敌兵布阵

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. hdu 1166 敌兵布阵

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. hdu 1166 敌兵布阵(线段树之 单点更新+区间求和)

    敌兵布阵                                                                             Time Limit: 2000/10 ...

  8. hdu 1166 敌兵布阵 树状数组

    敌兵布阵                                                                           Time Limit: 2000/1000 ...

  9. 【树状数组】HDU 1166 敌兵布阵

    敌兵布阵 日常题目胡乱总结 是个裸的树状数组qwq 区间查询+单点修改 字符判断相等那个地方我开始用的单引号 '  ' 直接不通过编译QAQ 第一遍交没有在一组数据结束后清空c数组 WA的让我很懵逼 ...

最新文章

  1. 仅展示近三天的动态设置_微信朋友圈设置三天可见了吗?
  2. HDU2568 前进【水题】
  3. Win8Metro(C#)数字图像处理--2.33图像非线性变换
  4. Nhibernate+SQLite 入门实例指南二 类的继承、多态关系
  5. (笔记)堆和栈的区别-两种不同的数据结构
  6. Beta版本发布报告
  7. C语言程序设计答案黄保和编,C语言程序设计答案(黄保和编)第5章.pdf
  8. 怎么设置php的css颜色代码,CSS的文本字体颜色如何设置
  9. 【软件使用技巧】一(截图)
  10. dcs world f15c教学_开源声码器WORLD在语音合成中的应用
  11. 遥感原理与应用总结——第三章:遥感传感器及成像原理
  12. 银河麒麟V10 远程桌面
  13. 怎么根据快递单号批量查询物流信息?
  14. [转]int转string string转int
  15. 二级页面的极简模板(帮助理解二级页面)
  16. html如何实现3d动画,基于webGL和HTML5的网页3D动画的设计与实现.pdf
  17. 解放军美女网络尖兵,90余昼夜写代码40多万行
  18. python人民币小写转大写_人民币金额转中文大写 (python实现)
  19. java cache定时过期,本地缓存高性能之王Caffeine
  20. JQuery实现移动9宫格图片自由切换移动

热门文章

  1. 关于ping命令出现大量dup原因
  2. 5G端到端时延要求1ms是个什么概念?
  3. php 大转盘抽奖概率 角度,在线抽奖大转盘和概率计算
  4. 如何计算机闲置虚拟机算法_利用闲置计算机的最佳方法
  5. ysdk应用宝渠道接入问题记录
  6. SRP简介(SRP--Single-Responsibility Principle):
  7. Bootstrap导航栏示例
  8. 配置 择时 sel stock
  9. 教你把竖屏视频剪辑为横屏播放的方法
  10. 滑铁卢大学 S. Keshav 教授:高效阅读科研论文的方法