[数据结构] 树状数组 的C程序实现
int tree[];//树状数组,用于取区间[x,y]的数据的和 /*
& 特殊运算,t&(-t)的值(十进制),就是t在2进制下,从右往左数第一个1出现的位置。
结合树状数组的特殊性质,这个值有用
*/
int lowbit(int t)
{
return t&(-t);
}
/*
假设对处在数组序号x的数据进行了更改,让x位置的数据有了增量v
对树状数组进行如下修改,使相关的包含x位数据的和都增加v
根据树状数组的性质,也就是对下标为 x, x+lowbit(x), x+lowbit(x+lowbit(x))....的数据都加v
*/
void add(int x,int v)
{
for(int i=x; i<=; i+=lowbit(i)) tree[i]+=v;
}
/*
取区间[0,x]的数据的和
*/
int getsum(int x)
{
int ans=;
for(int i=x;i>;i-=lowbit(i))
ans+=tree[i];
return ans;
}
/*
二分查找,进一步减少时间复杂度
*/
int binarySearch(int l, int r, int median)
{
int mid ;
while (l<=r)
{
mid = (l+r)/;
if (getsum(mid)<median) l = mid+;
//注意此处是 >=
else if (getsum(mid)>=median) r = mid-;
else return mid;
}
return l;
}
[数据结构] 树状数组 的C程序实现的更多相关文章
- ACM数据结构-树状数组
模板: int n; int tree[LEN]; int lowbit(int x){ return x&-x; } void update(int i,int d){//index,del ...
- 【poj 3167】Cow Patterns(字符串--KMP匹配+数据结构--树状数组)
题意:给2个数字序列 a 和 b ,问按从小到达排序后,a中的哪些子串与b的名次匹配. a 的长度 N≤100,000,b的长度 M≤25,000,数字的大小 K≤25. 解法:[思考]1.X 暴力. ...
- 数据结构--树状数组&&线段树--基本操作
随笔目的:方便以后对树状数组(BIT)以及基本线段树的回顾 例题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 例题:hdu 1166 敌兵布阵 T ...
- 数据结构--树状数组(黑龙江省第八届大学生程序设计竞赛--post office)
例题来源: 题目: 1468: Post office 题目描述 There are N(N<=1000) villages along a straight road, numbered fr ...
- C++-POJ2352-Stars[数据结构][树状数组]
/* 虽然题目没说,但是读入有以下特点 由于,输入是按照按照y递增,如果y相同则x递增的顺序给出的 所以,可以利用入读的时间进行降为处理 */ 于是我们就得到了一个一维的树状数组解法啦 值得一提:坐标 ...
- C++-POJ2155-Matrix[数据结构][树状数组]
二维树状数组+叉分 区间修改转化为单点修改 单点查询本来就可视为区间查询 于是本题可解 PS:不知道为什么函数传参数,传的是变量就会出现奇奇怪怪的问题? 所以读入单独写了,还有就是循环的初始化硬是多定 ...
- C++-HDU1394-Minimum Inversion Number[数据结构][树状数组]
给出0~n-1的一个排列,可以整体移动,求逆序对最小值 把数字num[i]的加入,等价于树状数组的第n-num[i]位加1 因为num[i]是第 (n-1)-num[i]+1=n-num[i]大的数字 ...
- C++-POJ3321-Apple Tree[数据结构][树状数组]
树上的单点修改+子树查询 用dfn[u]和num[u]可以把任意子树表示成一段连续区间,此时结合树状数组就好了 #include <set> #include <map> #i ...
- C++-HDU1166-敌兵布阵[数据结构][树状数组]
单点修改+区间查询=树状数组 空间复杂度O(n) 时间复杂度O(mlogn) #include <set> #include <map> #include <cmath& ...
随机推荐
- ClassLoader那事儿
ClassLoader是什么 ClassLoader中文类加载器,java编写出来的是.java文件,然后编译成.class文件,而ClassLoader就是把class文件加载到jvm内存中:但jv ...
- Coursera, Big Data 4, Machine Learning With Big Data (week 1/2)
Week 1 Machine Learning with Big Data KNime - GUI based Spark MLlib - inside Spark CRISP-DM Week 2, ...
- Apache Spark 章节1
作者:jiangzz 电话:15652034180 微信:jiangzz_wx 微信公众账号:jiangzz_wy 背景介绍 Spark是一个快如闪电的统一分析引擎(计算框架)用于大规模数据集的处理. ...
- 简单文本悬浮div提示效果
<html> <head> <script src="jquery-1.9.1.min.js" type="text/javascript& ...
- Win2012 R2安装 mysql8.0
1.官网下载安装 官网上面写着x86,其实是兼容x64和x86的,下载安装就行 2.安装navicat 3.navicat连接mysql的时候出现错误 client does not support ...
- BlockChain 的跨链技术的重要性和必要性
本期我们将从跨链技术的重要性和必要性.畅想区块链未来世界.什么是跨链.目前四种跨链技术的对比.构建EOS同构跨链体系群.EOCS跨链技术介绍.跨链通道.中继等几个层面带大家走进EOS跨链和EOCS的世 ...
- springboot中使用kindeditor富文本编辑器实现博客功能
kindeditor在之前已经用过,现在在springboot项目中使用.并且也在里面使用了图片上传以及回显等功能. 其实主要的功能是图片的处理:kindeditor对输入的内容会作为html标签处理 ...
- 2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践 实验内容(概要) 一.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...
- Win 10 系统下研华采集卡Advantech Navi SDK虚拟demo设备安装方法
研华的DAQNavi是其采集卡设备的.net编程SDK,安装了其通讯工具Navigator后,可以添加虚拟采集卡 demo device. 在Win10上,执行添加操作时,可能会出现添加失败,这是由于 ...
- jenkins主要目录用途
主目录 除了Jenkins的WAR包所在目录,Jenkins还有一个更重要的目录——Jenkins的所有重要数据都存放在这个独立的目录中,称为Jenkins主目录,它的默认位置是在当前用户根目录的隐藏 ...