- 题目大意

中文题,一共有4种命令,然后来根据命令来进行操作。

- 解题思路

典型的线段树的问题,进行点的更新,然后进行区间的查询(查询的时候查的是这个区间上的点的和)。

- 代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=50001;
int ans;
struct node
{int l,r,sum;
}t[4*maxn];void build(int l,int r,int k)
{int mid;if(l==r){t[k].l=l;t[k].r=r;t[k].sum=0;return;}mid=(l+r)/2;t[k].l=l;t[k].r=r;t[k].sum=0;build(l,mid,2*k);build(mid+1,r,2*k+1);
}void add(int n,int d,int k)
{int mid;if(t[k].l==t[k].r&&t[k].l==d){t[k].sum+=n;return;}mid=(t[k].r+t[k].l)/2;if(d<=mid)add(n,d,2*k);elseadd(n,d,2*k+1);t[k].sum=t[2*k].sum+t[2*k+1].sum;
}void findd(int l,int r,int k)
{int mid;if(t[k].l==l&&t[k].r==r){ans+=t[k].sum;return;}mid=(t[k].r+t[k].l)/2;if(r<=mid)findd(l,r,2*k);else if(l>mid)findd(l,r,2*k+1);else{findd(l,mid,2*k);findd(mid+1,r,2*k+1);}}char str[20];
int main()
{int n,x,y;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&x);build(1,x,1);for(int j=1;j<=x;j++){scanf("%d",&y);add(y,j,1);}printf("Case %d:\n",i);while(scanf("%s",str),strcmp(str,"End")){int a,b;scanf("%d%d",&a,&b);if(strcmp(str,"Add")==0)add(b,a,1);else if(strcmp(str,"Sub")==0)add(-b,a,1);else{ans=0;findd(a,b,1);printf("%d\n",ans);}}}return 0;
}

  

转载于:https://www.cnblogs.com/alpacadh/p/8521559.html

A - 敌兵布阵 (HDU - 1166)相关推荐

  1. A - 敌兵布阵 - hdu 1166

    Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些 ...

  2. 敌兵布阵 HDU - 1166 (线段树)

    线段树模板题: 1 #include<iostream> 2 #include<vector> 3 #include<string> 4 #include<c ...

  3. 【 HDU 1166】 敌兵布阵 树状数组从0到1

    如果给你一个数组,让你求某个区间的和,你很自然会想到遍历一遍数组,复杂度是O(n),但是如果有多次询问呢,你也许会想到用前缀数组,通过O(n)的预处理,达到O(1)的查询,但是如果要更新某个元素的值呢 ...

  4. 【HDU No. 1166】 敌兵布阵

    [HDU No. 1166] 敌兵布阵 杭电 OJ 题目地址 [题意] A国在海岸线沿直线布置了N 个工兵营地.C国通过先进的监测手段对A国每个工兵营地的人数都掌握得一清二楚.每个工兵营地的人数都可能 ...

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

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

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

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

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

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

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

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

  9. HDU 1166 敌兵布阵

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

最新文章

  1. myeclipse 如何显示序号
  2. Kafka设计解析(二):Kafka High Availability (上)-转
  3. 在ubuntu14.04 64位中使用jd-gui
  4. 华三交换机ping不通用户但用户_H3C故障常见故障及解决方案
  5. ThreadLocal的使用[代码片段]
  6. 基于Swoole和Redis实现的并发队列处理系统 1
  7. 文件类的操作 File c# 1614823687
  8. UnicodeDecodeError: 'gbk' codec can't decode byte 0xd2 in position 85: illegal multibyte sequence
  9. pku1063 Flip and Shift严格证明
  10. 台企招聘一名PHP程序員
  11. FISCO BCOS(五)———部署安装jdk1.8
  12. C#Socket客户端
  13. 计算机大学职业规划2000字论文格式,大学生职业生涯规划2000字论文
  14. 机器学习算法:K近邻(k-nearest neighbors)
  15. WebRTC 音视频同步分析
  16. 单片机——神奇的中断嵌套实验
  17. Bert 论文中文翻译
  18. 卡特兰数列(Catalan)
  19. 个人支付宝、微信、云闪付收款
  20. 得移动互联网者得天下

热门文章

  1. 20165236 2017-2018-2 《Java程序设计》结对编程练习_四则运算
  2. Android Root原理初探
  3. HBase 中文文档0.97
  4. 关于eclipse环境启动不成功的问题解决方法
  5. 使用命令行编译Less源文件
  6. maven简单工具命令
  7. SPOJ GCDEX (数论)
  8. [导入]完成可脚本调用的视频录制控件
  9. java分层窗格_java 简洁的分层实现
  10. ffmpeg视频处理