题目

树状数组

查询和修改的时间复杂度都是log(n),空间复杂度则为O(n)

原理

add()函数用来给树状数组按照他的规则赋值

结合lowbit转换函数使用

int lowbit(int x){return x&(-x);
}
void add(int i,int val){while(i<=n){c[i]+=val;i+=lowbit(i);}
}

sum函数用来求和   sum(i)就是1-i的和

int Sum(int i){int sum=0;while(i>0){sum+=c[i];i-=lowbit(i);}return sum;
}

模板代码:

题目ac代码   (附加练习题  nyoj116士兵杀敌)

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1e5+7;
int c[maxn];
int N,T,Case=1,x,y,flag;
char str[15];
int lowbit(int x){return x&(-x);
}
void add(int i,int val){while(i<=N){c[i]+=val;i+=lowbit(i);}
}
int Sum(int i){int sum=0;while(i>0){sum+=c[i];i-=lowbit(i);}return sum;
}
int main(){scanf("%d",&T);while(T--){printf("Case %d:\n",Case++);memset(c,0,sizeof(c));scanf("%d",&N);for(int i=1;i<=N;i++){scanf("%d",&flag);add(i,flag);}while(scanf("%s",str)&&str[0]!='E'){scanf("%d%d",&x,&y);if(str[0]=='Q')printf("%d\n",Sum(y)-Sum(x-1));else if(str[0]=='A') add(x,y);else add(x,-y);}}
}

hdu1166------树状数组(板子)相关推荐

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

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

  2. acwing-241. 楼兰图腾-树状数组板子题+开脑洞

    原题链接 题意:给你一组数,让你找出所有aiak的个数与ai>aj<ak的个数. 思路: 看到这个题瞬间想到了三层的暴力(暴力破万物),但是n是200000,跑三层服务器会跑吐的,必然超时 ...

  3. NOIP刷题记录(打鼹鼠)——二维树状数组板子题

    一.题目描述 在这个"打鼹鼠"的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大--).洞口都在一个大小为n的正方形中.这个正方形在一个平面直角坐标系中,左下角为 ...

  4. 第五讲 树状数组与线段树 【未完结】

    目录 1264. 动态求连续区间和 [树状数组板子题] 1265. 数星星 [树状数组变种] 1270. 数列区间最大值 [线段树 / 区间内求最大值] 1215. 小朋友排队 [树状数组] AcWi ...

  5. 高级数据结构1—初识树状数组—快速求得前缀和和修改某一元素值

    - 本人的LeetCode账号:魔术师的徒弟,欢迎关注获取每日一题题解,快来一起刷题呀~ 本人Gitee账号:路由器,欢迎关注获取博客内容源码.   树状数组和其他的高级数据结构不同,它非常的好写,同 ...

  6. HDU1166 敌兵布阵【树状数组】

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

  7. 树状数组的基本用法(板子)

    写这篇博客,为了方便自己后续复制粘贴板子: HDU 1166 题意:单点查询,区间更新 1 #include <cstdio> 2 #include <iostream> 3 ...

  8. HDU1166 敌兵布阵(树状数组模板题)

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

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

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

  10. hdu-1166敌兵布阵(树状数组)

    此处的树状数组讲解请点击:here~~~ #include<stdio.h> #include<string.h> int n,a[50005],q[40005]; int l ...

最新文章

  1. 第四课.LinuxShell编程
  2. mybatis执行查询的所有分析和创建代理对象的分析
  3. Python 文件读取与写入操作方法
  4. Java中导入错误的jar所引发的问题
  5. axure文件如何加密_怎么样给PDF加密?PDF文件如何加密?
  6. 快速找到thtmlbUtil的定义位置
  7. jzoj6297-世界第一的猛汉王【切比雪夫距离,扫描线】
  8. JAVA入门级教学之(JAVA注释)
  9. e300氛围灯哪里调节_黑色的奔驰E300有了亚光膜的加持 一出场就惊艳四座
  10. struct interface_golang 避坑指南(1)interface 之坑多多 | 文末深圳 Meetup
  11. linux智能灌溉流程,农田自动灌溉系统及灌溉方法与流程
  12. 谷歌力推新语言 Logica,解决 SQL 重大缺陷!
  13. OC算法练习-Hash算法
  14. android 7.0添加菜单,Android 7.0 settings中添加/删除菜单
  15. seay代码审计mysql插件报错_Seay源代码审计系统2.1版本下载(附源码): 人人都是代码审计师...
  16. 编译Android 4.4.4 r1的源码刷Nexus 5手机详细教程
  17. linux 有dll文件吗,linux上可以运行dll吗
  18. java 实现pdf 转图片_java实现PDF转图片的方法
  19. (搬砖)Epic/Feature/Story/Task/Bug到底是什么
  20. ES5-ES6-ES7_字符串与JOSN格式的数据相互转换以及深度克隆新对象

热门文章

  1. XHTML跟HTML的区别
  2. Effective C++ 之 Item 5:了解C++默默编写并调用哪些函数
  3. .通过JAVA-Webservices向其它平台提供Hbase服务
  4. myeclipse 隐藏父级包
  5. 一张图读懂“云栖大会·武汉峰会”发布的阿里云AI产品体系
  6. Logstash匹配日志日期
  7. Java To CSharp源代码转换
  8. logstash之codec插件
  9. winscp自动执行脚本
  10. 性能,不是不重要,而是,它没有可维护性重要