当前位置: 首页 > wzjs >正文

用java做网站代码建站宝盒

用java做网站代码,建站宝盒,内江广告制作公司,wordpress 阿里云oss前言 真心希望各位dalao点赞收藏~ 树状数组 作用:高效求出区间前缀和,允许进行修改操作。 举个栗子: 刚开始有8项,分别为1-8。 首先构建二叉树: 1-8/ |/ |/ |/ |/ |1-4 5-8/ | / |/ | / |1-…

前言

真心希望各位dalao点赞+收藏~

树状数组

作用:高效求出区间前缀和,允许进行修改操作。 举个栗子: 刚开始有8项,分别为1-8。 首先构建二叉树:

			   1-8/ |/  |/   |/    |/     |1-4     5-8/ |	    / |/  |    /  |1-2 3-4 5-6 7-8/ | / | / | / |1  2 3 4 5 6 7 8

设x为第i个数所在的层数,显然2,4,6,8,3-4,7-8没有任何用处,因为其他t[i](仅需<2^i个)表示树状数组去掉不需要的数组后第i项的值。

void add(int x,int p){while(x<=n){c[x]+=p;//x为下标,c[x]包含x[原来初始的下标x] x+=lowbit(x);//lowbit为转成二进制从后往前第一个为1的值(那一位的权值)}
}

(暴力求解,每次输入一个值都进行如上时间复杂度为O(log n)的操作(只加了当前这个值),时间复杂度O(n log n),空间复杂度O(n)) 

void build(){for(int i=1;i<=n;i++){t[i]+=a[i];//t[i]肯定包含a[i],而且以前一定没加上,所以要加上t[i+(i&-i)/*相当于lowbit(i)*/]+=t[i];//直接加到上级祖先}
}

(优化求解,直接一次性加给他的祖先,时间复杂度O(n),空间复杂度O(2n)) 

以上两种建树方法各有优劣,相当于一个时间空间互换的过程。 

拓展类型1: 1.求逆序数(对)问题 逆序数是指在第i个数前有多少个>第i个数的数。

树状数组的作用是求出前缀和, 所以我们可以使用类似于桶排序的原理,桶[i]表示i在此时出现的次数。

只需要求第i个数的时候就把桶[第i个数]++就可以了。

PS:一般用离散化使其空间复杂度变小且下标连续。

http://www.dtcms.com/wzjs/279730.html

相关文章:

  • wordpress用redis江门seo网站推广
  • 秦皇岛网站建设找汉狮长尾关键词爱站
  • wordpress 头条插件seo站内优化站外优化
  • 英文版政府网站建设实施方案网站搭建谷歌seo
  • 建设银行网站怎么登陆不了了网络营销推广公司
  • 烟台市芝罘区建设局网站郑州竞价托管代运营
  • 做批发网站有哪些百度识图在线识别
  • 网站制作地点网站搜索引擎优化技术
  • 女生做网站前台24小时网站建设
  • 自己建设网站需要什么手续百度推广产品有哪些
  • 合肥高新城建设计院网站谈谈你对网络营销的看法
  • 定制直播app惠州百度seo地址
  • 自己架服务器做网站百度网盘网页版入口官网
  • 温岭营销型网站建设湖南正规关键词优化首选
  • 龙华做棋牌网站建设找哪家效益快百度账号快速注册
  • 网站建设公司株洲厦门百度关键词seo收费
  • 网站建设话术反向链接查询
  • 怎么给自己的网站设置关键词百度云搜索引擎入口官方
  • 动漫一级a做爰片免费网站培训中心
  • 魅影视频武汉seo关键词排名优化
  • wordpress 站点转移快速网站推广
  • 买网站空间深圳电子网络推广查询
  • 网站建设界面ppt演示搜一搜百度
  • 衡阳县专业做淘宝网站批量关键词排名查询工具
  • 淮安专业做网站免费放单平台无需垫付
  • 福州网站建设兼职在线网页制作系统搭建
  • 海南网站建设小强seo网页优化培训
  • 做旅游信息的网站能赚钱吗上海快速优化排名
  • 四川省工程造价总站官网网站怎么建立
  • 营销型wordpress模板下载上海专业seo公司