hdu 1166 树状数组解
树状数组解决 (关于树状数组参考大佬的博客https://www.cnblogs.com/hsd-/p/6139376.html)
然后就很好理解这题了,代码附上
/*hdu 1166 单点修改,区间查询*/ #include <iostream> #include <stdio.h> #include <cstring> #define MAX 50010 using namespace std; int tree[MAX]; int arr[MAX]; int n;int lowbit(int x) {return x&(-x); } //初始化树状数组 void init () { tree[0] = 0;for (int i=1;i<=n;++i){tree[i]= 0;for (int j=i-lowbit(i)+1;j<=i;++j)tree[i]+=arr[j];} } //获取区间和 int get_sum(int x) {int ans = 0;for (int i=x;i>0;i-=lowbit(i))ans+=tree[i];return ans; } //更新数据 int add(int x,int p) {for (int i=x;i<=n;i+=lowbit(i))tree[i]+=p; }int main () {char ch[10];int T = 0;int a,b;cin>>T;for (int k=1;k<=T;++k){ cin >> n;for (int i=1;i<=n;++i)scanf ("%d",&arr[i]);init();//更新 printf ("Case %d:\n",k);//开始查询等操作while(~scanf ("%s",ch)){ if (!strcmp("End",ch)) break;scanf ("%d%d",&a,&b);if (!strcmp("Query",ch))printf ("%d\n",get_sum(b)-get_sum(a-1));else if (!strcmp("Add",ch))add(a,b);else add(a,-b);} }return 0; } /* 1 10 1 2 3 4 5 6 7 8 9 10 Query 1 3 Add 3 6 Query 2 7 Sub 10 2 Add 6 3 Query 3 10 End */
转载于:https://www.cnblogs.com/yuluoluo/p/8664081.html
hdu 1166 树状数组解相关推荐
- HDU 4358 树状数组+思路
http://acm.hdu.edu.cn/showproblem.php?pid=4358 如图所示,当k==3时,如果我们扫描到红线所在的位置. 则符合条件的区间就是从红线到两条紫线所包含的区间( ...
- hdu 4991(树状数组优化dp)
Ordered Subsequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- hdu 3333 树状数组+离线处理
思路:既然要求的是不同的元素的和,那么我们可以想办法让每个值在区间中只出现一次,于是想到了离线的算法:将查询按照右端点排序,位置在右端点之前的元素都插入到树状数组中,对于已经出现过的值,我们要先删除( ...
- hdu 4417(树状数组+离线算法)
解题思路:这道题要求某区间内比h小的个数,其实这里可以类似于树状数组求逆序数那样.关键是如何转换成树状数组的模型,这才是本题的难点. 我们首先分析,如果知道h在该区间的哪个位置,那么剩下的就很好做了. ...
- hdu 1394(树状数组求逆序数)
解题思路:这道题是求循环数组中逆序数最小值,求逆序数这里肯定是用树状数组.只是这里有一点点变化,由于题目中n位数是0-n-1的一个排列,所以num[i]可表示为比num[i]小的数的个数.把第一位的数 ...
- Weak Pair HDU - 5877 树状数组+离散化+DFS遍历
题意 给我们一颗有根有向树 以及每个点得权值a[1]~a[n] 需要我们求出在这颗树种有多少对满足以下两个条件的pair (1)u是v的祖先节点 (2)a[u]*a[v]<= k N<=1 ...
- hdu 4970 树状数组 “改段求段”
题意:塔防.给1--n,给出m个塔,每个塔有攻击力,给出k个怪兽的位子和血量,问有几只可以到达n点. 今天刚刚复习了树状数组,就碰到这个题,区间更新.区间求和类型.第三类树状数组可以斩. 注意一下大数 ...
- hdu 2481 树状数组 双关键字排阻
2481这道水题坑了我三天.....数组超界10W让我的6.0崩溃了....然后由于不懂...重装了一边.... 不扯了...讲思想.. 把s看成x,e看成y,于是,每次输入就相当于输入一组点,看了网 ...
- hdu 1541 树状数组版)——咯咯
/*树状数组版*/ #include<stdio.h> #include<string.h> #define L 32005 #define N 15005 int tree[ ...
最新文章
- Elasticsearch入门Demo(二)
- 轻松学Pytorch – 年龄与性别预测
- FineUI小技巧(4)关闭窗体那些事
- [原]Failed to load SELinux policy. System Freezing ----redhat7or CentOS7 bug
- 晶科能源坐稳全球光伏组件制造商“头把交椅”
- 在Filter 无法跳转地址
- 在阿里做博士后是一种怎样的体验?
- 无法将该对象添加到ldap服务器_LDAP 基础知识
- powerpoint 发布_PowerPoint的死亡:这些谈话打破了常规
- mysql逻辑读高影响_运维日记| MySQL/Oracle深度解析之一:逻辑读
- shell 练习题02 一个文件里将内容三行显示为一行
- java文件下载和导出文件名乱码浏览器兼容性问题
- 消息队列控制灯代码_基于ARM的智能灯光控制系统经验总结分享
- Django自定义过滤器
- html前端论文参考文献,web前端论文参考文献论文
- 基于spss的偏相关分析(partial correlation analysis)
- 电芯容量在前期循环中容量增加_锂电池随着使用次数增加而最大容量下降,为什么...
- PTCMS可听书可下载的小说站源码+带采集和教程
- 工业机器人的TCP点
- 唐朝一体机屏幕显示变红
热门文章
- 【05】CC - 格式
- SCCM2012系列之六,SCCM2012部署前的WDS准备
- WinSCP无法连接linux,而secureCRT却可以
- 计算机运算器存储器知识点,计算机一级知识点:运算器、控制器
- java垃圾收集方法_java几种垃圾收集方法和垃圾收集器
- ArcGIS Maritime Server 开发教程(四)Maritime Service 开发实践
- 代码提示(支持3.X和4.X)—ArcGIS API forJavaScript
- iOS应用支持IPV6及阿里云相关配置
- Spring Boot自定义Banner
- 第三方网站调用微信公众号的图片被禁止