树形数组 学习之外总能发现别人更好的

 <html>
<HEAD></HEAD>
<BODY> 
<textarea rows="50" cols="50">
 /*****************
http://www.anycodes.cn/zh/

 [[树状数组]线段数]
 高效:log(n)
 操作:位操作
 思想:二分法
 百度百科之外还有以下博客
http://dongxicheng.org/structure/binary_indexed_tree/
http://blog.csdn.net/int64ago/article/details/7429868#

t3
 ******************/
 
#include <iostream>
using namespace std;
int in[]={1,2,3,4,5,6,7,8,9};int n=9;
int lowbit0(int t)
{
  return t & ( t ^ ( t - 1 ) );
}
int lowbit(int x)
{
return x&-x;
}
 /**************
http://jinzhi.supfree.net/
再度复习内存与位操作
如 存3  为0000 0011
-3       1111 1101
按位与     0000 0001 
  **************/
//求前n项和
int sum(int end)
{  int sum = 0;
   while(end > 0)
   {
     sum += in[end];
     end -= lowbit(end);
   }
  return sum;
 }
 
//增加某个元素的大小
 void addx(int pos, int num)
 {
    while(pos <= n)
    {  
         in[pos] += num;
       pos += lowbit(pos);
     }
 }
 void show()
 {
     for(int i=0;i<9;i++)
     cout<<in[i]<<" ";
     cout<<endl;
 }
int main()
{   
    show();
    addx(2,2);
    show();
    cout<<sum(5);
return 0;
}
/****
对结果13还是有点疑问
***/
 </textarea>
<textarea rows="50" cols="50"> </textarea> 
</BODY>
</html>
时间: 2024-10-08 03:37:45

树形数组 学习之外总能发现别人更好的的相关文章

知道自己是怎样学习新知识和与别人共事的!

我们生活的这个时代充满着前所未有的机会:如果你有雄心,又不乏智慧,那么不管你从何处起步,你都可以沿着自己所选择的道路登上事业的顶峰.但前提是,你必须成为自己的首席执行官,知道何时改变发展道路,并在可能长达50年的职业生涯中不断努力.干出实绩. 要做好这些事情,首先要对自己有深刻的认识,清楚自己的优点和缺点,知道自己是怎样学习新知识和与别人共事的,并且还明白自己的价值观是什么.自己能在哪些方面做出最大贡献.因为只有当所有工作都从自己的长处着眼,你才能真正做到卓尔不群. 今天给大家推荐“现代管理学”

ACM 树形数组

树状数组(Binary Indexed Tree(BIT), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值:经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值. 树状数组的解法和程序网上有很多,这里我想思考一下这种算法的灵魂,也就是基于什么样的契机和灵感产生了这种绝妙的想法.这是我感兴趣的方向. 这种算法,主要用于查询数组中任意两个数之间的所有元素之和,而且这个

我们总在拒绝别人,又如何能提高得了自己?

这天我和华英在老师办公室谈英语学习过程中出现的一些现象,明确了这些现象的出现有哪些好处和弊端,随后老师叫来了其他几位同学,我坐在一边听老师和其中一位同学的对话. 老师:.....你的态度是值得肯定的,值得所有同学学习,但有些时候我们做事情要慎重,要有科学的理论做指导.... 同学:.....老师我觉得我是为了大家着想,希望通过组织和监督来促进学习....我没有不跟着这种路子走,私自改变学习内容... 老师:我首先明确了你的积极主动是值得肯定的,乐于助人这也是非常好的,我是说我们采取行动要依据,要

Unity-Animator学习系列总索引

花了不少时间完成了这篇Unity Animator学习系列文章,其中API部分很多都是亲测.希望能对路过的博友有所帮助 相关参考文档 Unity Animator官方组件文档 Unity Animator官方脚本文档 圣典的部分汉化文档 Animator学习系列总目录 1.Unity-Animator学习系列---API 2.Unity-Animator学习系列---控制IK 3.Unity-Animator学习系列---剪辑播放后位置预判(Animator.Target) 4.Unity-An

树形数组——摘星星伪题解

树形数组. 题目:摘星星 描述:宇航员经常检测星图,在星图上,星星由点表示而且每颗星星都有笛卡尔坐标.星星的等级表示左下方星星的数量.宇航员想知道星星等级的分布. 例如,如上面图形所示,第5号星等级是3 (它由三个标记为1,2和4的星组成).标记着2和4的星星的等级是1,在此地图上,0等级的星星只有一个,1等级的有两个,2等级的有一个,3等级的有一个. 你设计一个程序,在给定地图上计算出每个等级星星的数量. 输入: 输入文件“INPUT.TXT”的第一行包含N个星星(1<=N<=60000),

第四章 分治策略 4.1 最大子数组问题 (减治法,别人的,拿来看看)

/** * 获得连续子数组的最大和 * * @author dfeng * */ private static long getMax(long a, long b) { return a > b ? a : b; } /** * 获得连续子数组的最大和 * * @param array * @return 最大和,此处用了Long型是为了表示当参数为null或空时,可以返回null,返回其它任何数字都可能引起歧义. */ public static Long getMax(int[] arra

后缀数组学习笔记【详解|图】

后缀数组学习笔记[详解] 老天,一个后缀数组不知道看了多少天,最后终于还是看懂了啊! 最关键的就是一会儿下标表示排名,一会用数值表示排名绕死人了. 我不知道手跑了多少次才明白过来.其实我也建议初学者手跑几遍,但是一定要注意数组的意义,否则就是无用功. 数组含义: s[ ]:输入的字符串,预处理的时候会在末尾加上一个0 sa[ ]:它的下标就是后缀排名 x[ ] = t[ ]:用来保存第一关键字排名,注意!它的数值是排名.初始时恰好是字符串的ASCII码.字典序嘛! y[ ] = t2[ ]:它的

js数组学习整理

原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); //长度为3 var colors = new Array('red','blue');//初始化 其中,在声明数组的时候,去掉new操作符,也可以. 还有一种初始化数组的方式,使用数组字面量表示法 . 数组字面量由一对包含数组项的方括号表示,多个数组项之间用逗号隔开. var colors = [ '

【SGU 180】Inversions —— 归并排序或树形数组计算逆序对

原题链接 180. Inversions time limit per test: 0.25 sec. memory limit per test: 4096 KB input: standard output: standard There are N integers (1<=N<=65537) A1, A2,.. AN (0<=Ai<=10^9). You need to find amount of such pairs (i, j) that 1<=i<j&l