温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-19 08:07:55 来源:网络 阅读:311 作者:wzdouban 栏目:编程语言
 <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>


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI