分块感想

分块大法好

数据结构+算法=程序,这句话是个大神讲的。可见数据结构几乎占了算法题中的半壁江山。

   数据结构的基本思想就是分块:树状数组是按其二进制表达来分块的,线段树是根据其区间长度分块……(将原序列分解为若干连续不想相交的子序列)

   分块就被誉为“万能数据结构”,其思想个人认为比较好理解。 就是讲数据打包,对整个包的数据的询问可以直接预处理得出。修改包中的元素则需维护整个包的信息。(这是分块我认为最重要的两个性质(优缺点));但分块的大小不同于树状数组,线段树……(其块的大小不变)现在讨论一下块的大小多少合适:

设块的大小为m,有n个元素组成序列;则查询的时间复杂度:

对于整个块,每个块时间复杂度O(1)(不是O(1)以后讨论,结论不变)为O(n/m);

对于散块,就是每次查询最前面最后面多出的那些东东,为O(m)

所以查询总的时间复杂度为O(m)+O(n/m),由算术平均不等式得出m+(n/m)<=2sqrt(n)当且仅当m=n/m时成立

  修改时结论不变

  所以块的大小为sqrt(n)时时间复杂度最优 

  

时间: 2024-10-19 06:54:02

分块感想的相关文章

HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化

分析(官方题解): 一点感想: 首先上面那个等式成立,然后就是求枚举gcd算贡献就好了,枚举gcd当时赛场上写了一发O(nlogn)的反演,写完过了样例,想交发现结束了 吐槽自己手速慢,但是发了题解后发现,这题连O(n)欧拉函数前缀和的都卡了,幸亏没交,还是太年轻 对于官方题解说sqrt(n)优化(其实就是n/(小于n一段数)结果是一样的,也不算什么分块),还是很简单的,做反演题的时候看到过很多,只是忘记了 如果不会请看这篇解题报告http://wenku.baidu.com/view/fbe2

读《平凡的世界》感想(一)

读<平凡的世界>感想(一) 平凡的世界是一本经典的书,一直想看,最近终于开始品读这部巨著."平凡的世 界"是路遥文集中份量最重的一部长篇,全景式地描写了中国现代城乡生活,通过复杂 的矛盾纠葛,以孙少平等人位代表刻画了社会各阶层普通人们的形象,人生的自尊.自 强与自信,人生的奋斗与拼搏,挫折与追求,痛苦与欢乐,纷繁地交织,读来令人荡气 回肠. 全书的主角是孙少平,他是一个平凡而普通的人,他没有过人的武艺或超群的智慧, 他也有世俗的攀比心和青年人的迷茫:那他凭什么成为一部文学巨

【软件工程】一个学期软件工程课的感想

软件工程课是个不错的课,因为教课老师嗓门很大,PPT做的很有意思,上课从来没有点过我的名字,万分荣幸. 软件工程课的脉络很清晰,就是个各种软件开发,个人软件开发,结对软件开发还有结组软件开发.针对这三种软件开发,各写了一个程序,就从这三个程序入手说起吧. 一.              查询一段英文短文中的单词出现的频度.说实话,遇到这样的题,我只想说一句:呵呵.这样的题网上肯定一大堆,随便百度一个就交差了.但是这是第一个程序,那么简单就直接放弃挣扎是不是太弱了,于是就自己写了一个,写了好久,但

读&lt;&lt;大数据时代&gt;&gt;的一些感想

第一次听说<<大数据时代>>这本书,是在网上看到的央视搞的一个2013中国好书评选活动推荐的25本"中国好书"的榜单中看到的.然后迅速上豆瓣上查看了一下对该书的评价,一看非常高,再加上央视的推荐是从2013在中国出版的40册图书中选出25本,可以说是精华了.果断定了一本,花了三天时间读完了.   大数据这个名词或者说概念从被提出开始,经过短短几年的发展,已经传的沸沸扬扬了,经常见诸媒体上.好像哪家媒体的科技板块每天不弄一些这样的新闻条,它就显得不够档次一样.这是

CodeChef FNCS (分块+树状数组)

题目:https://www.codechef.com/problems/FNCS 题解: 我们知道要求区间和的时候,我们用前缀和去优化.这里也是一样,我们要求第 l 个函数到第 r 个函数 [l, r] 的函数和,那么我们可以用 sum[r] - sum[l-1] 来求得. 由于这个数据量有点大,所以我们将函数分块. 例如样例: 1 3 有5个函数,那么我们分成3块.{ [1 3] , [2 5] }, { [4 5], [3 5] }, { [1 2] }.每一块对应都有一个sum ,这时如

分块算法及模板

此文为博主原创,转载时请通知博主,并把原文链接放在正文醒目位置. 简要介绍 分块算法就是把一串数据分割成几块数据的算法,其实是对暴力的一种优化. 通常在分块时,每块的大小为√n.但最后一块的大小也可能小于√n,只能用暴力来算. 通过把对单个数据的操作转化为对几个块的数据的操作,能够节省时间,提高运算效率. 分块算法在处理大范围的修改.查询问题时有很大优势. 分块算法代码 1 /*此代码主要模仿了钟皓曦大佬的分块算法*/ 2 #include<iostream> 3 #include<cs

天翼杯大数据算法应用大赛感想

竞赛过去很久了,早就想写写感想与经历,可是一直拖着没写.今天终于有时间了,就写写吧. 竞赛题目是视频网站推荐,根据前七周每天用户对10个视频网站的访问次数数据以及其他上网行为,预测用户第八周对10个视频网站的访问量. 咋一看这是个时间序列预测问题,是啊,给出前49天用户访问数据,让你预测未来七天用户访问数据.这确实应该是个时间序列预测问题. 但我用时间预测算法模型Holt-Winter(3次指数平滑), ARIMA跑结果的时候,结果却并不是很好. 我后来分析了下数据,统计了七周每一周七天内用户对

A - 敌兵布阵(分块)

C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视. 中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报某一段连续的工兵营地一共有多少人,例如Derek问:"Tidy,马上汇

gcd的性质+分块 Bzoj 4028

4028: [HEOI2015]公约数数列 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 865  Solved: 311[Submit][Status][Discuss] Description 设计一个数据结构. 给定一个正整数数列 a_0, a_1, ..., a_{n - 1},你需要支持以下两种操作: 1. MODIFY id x: 将 a_{id} 修改为 x. 2. QUERY x: 求最小的整数 p (0 <= p < n),使