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

做网站多大/上海广告推广

做网站多大,上海广告推广,三亚官方网站建设,顺德网站建设市场数据结构之真别多想—树状数组瓶颈如何理解树状数组?这个结构的思想和线段树有些类似:用一个大节点表示一些小节点的信息,进行查询的时候只需要查询一些大节点而不是更多的小节点。最下面的八个方块就代表存入 a 中的八个数,现在都…

370e4c818444c1568ce959f87a227357.png

数据结构之真别多想—树状数组

瓶颈

如何理解树状数组?

1922680e8f88540743ce6912496221fa.png
这个结构的思想和线段树有些类似:用一个大节点表示一些小节点的信息,进行查询的时候只需要查询一些大节点而不是更多的小节点。
最下面的八个方块就代表存入 a 中的八个数,现在都是十进制。
他们上面的参差不齐的剩下的方块就代表 a 的上级—— c 数组。
很显然看出: c2 管理的是 a1 & a2 ; c4 管理的是 a1 & a2 & a3 & a4 ; c6 管理的是 a5 & a6 ;c8 则管理全部 8 个数。
所以,如果你要算区间和的话,比如说要算 a51 ~ a91 的区间和,暴力算当然可以,那上百万的数,那就 TLE 喽。
——————摘自http://oi-wiki.org

初看这些文字,你可能会想:

“啊这这这???你讲这些我们怎么听得懂啊,这树状数组是啥,咋用,我们还是懵的啊”

当然,为了解决问题而书写算法的话,我们不需要去理解这个结构的原理到底是啥,我们只需要知道这个东西

用在哪?

怎么用?

就足够了

用在哪?

我们都知道:

一般的普通数组单点操作的时间复杂度的O(1)区间操作的时间复杂度是O(n)

而我们树状数组的和普通数组的区别就在于:

单点操作和区间操作的时间复杂度都是O(log n),而且

单点修改和区间操作(加、求和)都需要用函数实现

那么这么说我们大概能理解一点了,那就是:

一旦遇到大规模使用区间求和的问题,我们就可以考虑使用树状数组。

怎么用?

总得来说就是三个函数:lowbit、添加函数,求和函数

lowbit

int 

单点修改

void 

区间求和

int 

就这??就这??

啊啊,看似就这,那我们来找一道模板题做一做,深化一下理解吧。

例题:Acwing 788 逆序对的数量

题面

给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。

逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。

输入

第一行包含整数n,表示数列的长度。

第二行包含 n 个整数,表示整个数列。

输出

输出一个整数,表示逆序对的个数。

PS: 1≤n≤1000001≤n≤100000

输入样例:

6
2 3 4 5 6 1

输出样例:

5

解题过程

“逆序对”的计算需要用到大量的区间运算,在这个时候我们的树状数组就发挥了很大的用处了,

对于这道题的核心思想,即是:

用数组的值作为下标,每次出现逆序对则给该下标对应值加一,最后求和

代码如下

#include 

emmm,样例过了,提交!

诶怎么wa了,还是段错误?

7a7a28c25f9744c0591d4c8dbd665d8f.png

看了看测试数据,原来是我们将数据当作下标,而数据的大小超过了数组大小的限制,而且也造成了空间的冗余,这个时候,我们想到一个方法:

离散化

离散化,即是将对象之间的关系模糊化,在不改变数据相对大小的条件下,对数据进行相应的缩小。

什么意思呢?

比如说:

在{ 1、 2、 99999、 3 }之间判断逆序对和在{ 1、 2、 4、 3}之间判断逆序对在基本流程上无差别,而如果不进行离散化,则花费了99999个空间,为了节省空间,也为了消除数组越界的风险,我们使用离散化优化一下代码。

#include 

最后,我们得到了AC!!!

希望我的抛砖引玉能引起更多的思考! (蒟蒻鞠躬)。

http://www.jmfq.cn/news/5195719.html

相关文章:

  • 个人+网站可以做导航吗/网络营销swot分析
  • 湖北外贸网站建设费用/西点培训学校
  • repress wordpress/北京seo顾问推推蛙
  • 金泉网做网站要找谁/百度热线
  • 香港公司做网站国外销售/网络推广深圳有效渠道
  • 把网站提交给百度/搜索引擎优化关键词
  • 山西网站开发建设/我要发布信息
  • 用什么软件快速做网站/灰色推广引流联系方式
  • 公司要网站建设/快优吧seo优化
  • 精品源码/苏州关键词优化软件
  • 网站域名提交/全网整合营销外包
  • 一个做二维码问卷调查的网站/网络营销活动策划方案
  • dw网页制作教程主页子页/seo平台优化服务
  • 乒乓球网页设计素材/百度seo通科
  • 一个微信小程序大概多少钱/产品seo是什么意思
  • 用ps做网站页面/关键词推广
  • 对网站主要功能界面进行赏析/百度网址入口
  • 网站备案需要去公安局/郑州网站制作
  • 无锡兼职做网站/dz论坛seo设置
  • 网站接入商查询/班级优化大师免费下载安装
  • 如何做让公众都知道的网站/金蝶进销存免费版
  • 100m光纤做网站/最全bt搜索引擎入口
  • 个人做电子商务网站/淘宝培训
  • 石家庄机票网站建设/正规引流推广公司
  • 手机响应式网站怎么做/seo培训学校
  • 微信导航网站如何建设/百度sem运营
  • 公司网站管理属于什么职位/怎么让百度搜索靠前
  • 建设网站需要什么信息/凡科建站的优势
  • 温州市网站制作/游戏推广渠道
  • 无极在线最新招聘找工作/宁波关键词优化企业网站建设