树状数组很简单,太晚了,贴下代码睡觉去。。。

另,研究线段树的时候,发现网上流传着有几种不同的线段树,最正宗的是以单位区间为单位,只能处理线段;另外还有几种叶子结点是的,这种也可以用来处理点,所以这题是可以用这种线段树做的。还搞不太清楚它们之间的关系。mark一下,明天再说。。。

代码

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
inline int Rint() {int x; scanf("%d", &x); return x;}
#define FF(x1, x2) for(int i=x1; i<x2; i++)
#define  LOWBIT(x) x&(-x)#define MAXN 50002 //点数int c[MAXN];int getSum(int x)
{int sum=0;while(x>0){sum+=c[x];x-=LOWBIT(x);}return sum;
}void add(int i, int j)
{while(i<MAXN){c[i]+=j;i+=LOWBIT(i);}
}void sub(int i, int j)
{while(i<MAXN){c[i]-=j;i+=LOWBIT(i);}
}int query(int i, int j)
{return getSum(j)-getSum(i-1);      //i-1
}void clear()   {memset(c, 0, sizeof(c));}int main()
{int t = Rint();FF(1, t+1){clear();       //① 清空树状数组printf("Case %d:\n", i);int n = Rint();FF(1, n+1)     //正整数N、正整数ai{int j = Rint();add(i, j);}char opt[10];while(scanf("%s", opt) && opt[0]!='E'){int i=Rint(); int j=Rint();switch(opt[0]){case 'Q':    printf("%d\n", query(i, j));  break;case 'A':       add(i, j);      break;case 'S':       sub(i, j);      break;}}}
}

转载于:https://www.cnblogs.com/tclh123/archive/2011/08/05/6171762.html

HDU 1166 敌兵布阵【树状数组】相关推荐

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

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

  2. hdu 1166 敌兵布阵 树状数组 模板题

    这题是树状数组入门的一模板题,非常基础,被小白成为"赤裸裸"的入门题,哈哈,一个plus,一个sum全部搞定 #include<stdio.h> #include< ...

  3. HDU 1166 敌兵布阵 树状数组小结(更新)

    树状数组(Binary Indexed Tree(BIT), Fenwick Tree) 是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有 元素之和,但是每次只能修改一 ...

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

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

  5. hdu1166敌兵布阵 树状数组裸题

    树状数组裸题 动态更新区间内的点,动态查询区间和 敌兵布阵 ac代码 #include<iostream> #include<algorithm> #include<cs ...

  6. 杭电OJ 敌兵布阵 树状数组

    是一道简单的树状数组的题,,是一道简单题.....题目: C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Der ...

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

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

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

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

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

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

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

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

最新文章

  1. EJB学习(四)——Enterprise Bean(企业Bean)和Entity Bean(实体Bean)
  2. SAFE: Similarity-Aware Multi-Modal Fake News Detection-学习笔记
  3. linux安装mysql出错( file /usr/share/mysql/czech/errmsg.sys from install of MySQL-server-5.5.31-2.el6.i6)
  4. 华为服务器如何用pe重装系统,教你华为u盘重装win10系统详细图文
  5. 虚拟机系列 | JVM运行时数据区
  6. oracle连接中出现错误ORA-12541,ORA-12514,ORA-01017的解决方法
  7. 大数据_Flink_Java版_数据处理_流处理API_Transform(3)_Reduce聚合算子---Flink工作笔记0031
  8. sstream用法(后续更新)
  9. java整人代码大全_给大家分享个整人代码。很实用
  10. 联想年报有看头:供应链展现韧性,PC迎来新机遇
  11. linux系统手机助手,手机助手Linux版下载
  12. 2022年对于李一男是关键的一年,这也将决定他的社会地位
  13. 七、VUE基础——悦听音乐播放器案例(vue+axios)
  14. 41家大公司年度福利比较 大公司福利档案揭秘
  15. PS从入门到精通第4节——祖传抠图技法
  16. 【uniapp基础篇】上传图片
  17. 西门子低代码平台通过Database Connector 连接Mysql 实现增删改查
  18. GCM与CCM的的规格和加解密过程
  19. flac是什么格式,flac转mp3怎么高效实现
  20. 【API爬虫】30分钟百万条新浪新闻信息爬取。python得极速之旅

热门文章

  1. 硬核浪漫还看焊武大帝
  2. 第十五届全国大学生智能车竞赛山东赛区比赛成绩和奖项
  3. view for easyui 后台模板html_Thinkphp6模板引擎循环标签(五)
  4. wxpython输入框_基于wxPython的GUI实现输入对话框(1)
  5. c语言节点导入数据编程,编程小白。用C语言计算SR E2E ARQ模式下节点的数据分析...
  6. java joptionpanel_JOptionPane用法--java
  7. mysql 5.7.16默认密码_(转)Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql默认密码...
  8. java架构升级_java架构之路(多线程)synchronized详解以及锁的膨胀升级过程
  9. 服务器php环境一键配置,phpstudy一键配置服务器环境教程
  10. vbsedit无法创建空文档_vue文档里你没捡起来的宝藏