- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构并查集教学资料ppt电子教案课件详解
一个正整数N(N=50000),表示敌人有N个工兵营地,接下来有N个正整数,第i个正整数ai代表第i个工兵营地里开始时有ai个人(1=ai=50)。接下来每行有一条命令,命令有4种形式:(1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30)(2)Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30);(3)Query i j ,i和j为正整数,i=j,表示询问第i到第j个营地的总人数;每组数据最多有40000条命令 * * * * * 线段树适用于多次查询 用线段树解题,关键是要想清楚每个节点要存哪些信息(当然区间起终点,以及左右子节点指针是必须的),以及这些信息如何高效更新,维护,查询。不要一更新就更新到叶子节点,那样更新效率最坏就可能变成O(n)的了。 * * 对于序列a,我们设一个数组C C[i] = a[i –2^k+ 1] + … + a[i] k为i在二进制下末尾0的个数 2^k就是i 保留最右边的1,其余位全变0 i从1开始算! C即为a的树状数组 对于i,如何求2^k ? * 通常我们用lowbit(x)表示x对应的2k lowbit(x) = x(-x) * C[i] = a[i-lowbit(i)+1] + …+ a[i] C1=A1 C2=A1+A2 C3=A3 C4=A1+A2+A3+A4 C5=A5 C6=A5+A6 C7=A7 C8=A1+A2+A3+A4+A5+A6+A7+A8 ………… C16=A1+A2+A3+A4+A5+A6+A7+A8+A9+A10+A11+A12+A13+A14+A15+A16 * * 设sum(k) = a[1]+a[2]+…+a[k]则a[i] + a[i+1] + … + a[j] = sum(j)-sum(i-1) 根据C的构成规律,可以发现sum(k)可以表示为: sum(k) = C[n1]+C[n2] + …+ C[nm] 其中nm= k ni-1 = ni-lowbit(ni) * ni-lowbit(ni) 是什么样子?就是ni的二进制去掉最右边的1 k 的二进制里最多有几个1?log2k (向上取整)个 sum(k)最多log2k(向上取整)项,所以本次求和的复杂度就是log2k * 如果a[i]更新了,那么以下的几项都需要更新: C[n1], C[n2], …C[nm] 其中,n1 = i ,ni+1 = ni + lowbit(ni) 同理,总的来说更新一个元素的时间,也是logN的 * a[i]更新- C[i]必须更新 C[i]更新-C[i+lowbit(i)]必须更新: C[i+lowbit(i)] = a[ (i+lowbit(i)) –lowbit(i+lowbit(i)) +1] + …. + a[i+lowbit(i)] 证明i+lowbit(i) –lowbit(i+lowbit(i)) +1 = i,就证明C[i+lowbit(i)] 要更新 lowbit(i) 显然比lowbit(i+lowbit(i)) 要小 所以i+lowbit(i) –lowbit(i+lowbit(i)) +1 = i * 下面要证明,若C[i]更新,则对任何k, (ik i+lowbit(i)), C[k]都不需要更新(即C[k]不包含a[i]) C[k] = a[k-lowbit(k)+1] + … + a[k] 只要证明k-lowbit(k)+1比i大即可 因ik i+lowbit(i) ,假设i的最右边的1是从右到左从0开始数的第n位,那么i+lowbit(i)就是将i的低n位全变成1后,再加1。那么k一定是从第n位到最高位都和i相同,但是低n位比i大(即k低n位中有1,因i低n位全是0) k-lowbit(k) +1就是k去掉最右边的1,然后再加1,那当然还是比i大 * 树状数组适合单个元素经常修改而且还反复要求部分的区间的和的情况。 上述问题虽然也可以用线段树解决,但是用树状数组来做,编程效率和程序运行效率都更高(时间复杂度相同,但是树状数组常数小) * * 敌兵布阵用树状数组实现更好 * * * 并查集(union-find set)是一种用于分离集合操作的抽象数据类型。它所处理的是“集合”之间的关系 设想需要对不相交集合(disjoin set)进行两种操作:(1)检查某元素属于哪个集合 (2) 合并两个集合。 执行N次合并和M(M=N)次查询,并查集可以实现O(1)的平摊复杂度! * 1) 用一棵树来代表一个集合,集合里的每个元素都是树的一个节点。 2) 用树根来唯一标示这棵树(这个集合) 3) 那个元素作为根无所谓,只要属于同一集合的根相同 4) 所
您可能关注的文档
- 教科版小学五年级科学上册第一单元改变生态瓶管理.ppt
- 教科版小学三年级品德与社会上册《我喜欢过年》PPT课件详解.ppt
- 教科版小学五年级科学上册第一单元食物链和食物网课件.ppt
- 教科版小学五年级科学上册第二单元做个太阳能热水器管理.ppt
- 教科版小学五年级科学上册第三单元土壤中有什么教案.ppt
- 教科版小学五年级上册品德与社会《古老的丝绸之路》详解.ppt
- 教科版小学三年级品德与社会下册《让我们共同面对》课件精选.ppt
- 教科版小学三年级下册品德与社会《时光老人对我说》课件精选.ppt
- 教科版小学六年级科学上册第三单元神奇的小电动机教案.ppt
- 教科版小学五年级科学上册第二单元光的反射教案.ppt
- 湖北省荆州市沙市中学2025-2026学年高一上学期12月月考语文试题.docx
- 吉林省长春市第二实验中学2025-2026学年高二上学期11月期中考试数学含解析.docx
- 四川省字节精准教育联盟2026届高中毕业班第一次诊断性检测政治.docx
- 四川省字节精准教育联盟2026届高中毕业班第一次诊断性检测政治答案.docx
- 物理试卷(A卷)答案山西省三重教育2025-2026学年高二12月阶段性检测(12.17-12.18).docx
- 物理试卷(A卷)山西省三重教育2025-2026学年高二12月阶段性检测(12.17-12.18).docx
- Unit1Reading2课件牛津译林版七年级英语下册.pptx
- 物理试卷(A卷)答案浙江省2025学年第一学期浙江北斗星盟高二年级12月阶段性联考(12.18-12.19).docx
- 四川省字节精准教育联盟2026届高中毕业班第一次诊断性检测语文.docx
- Unit1MynamesGina第3课时考点讲解writing16张.pptx
最近下载
- DB62_T 5101-2025 公路绿化技术规范.docx VIP
- DB62T 1161-2022 机修梯田技术规范.docx VIP
- DB62T 4105-2020 村务公开规范.docx VIP
- DB62T 4894-2024 花椒农业气象观测规范.docx VIP
- DB62T 3152-2018 兰州市屋顶绿化技术标准.docx VIP
- 规范《GB29450-2012-玻璃纤维单位产品能源消耗限额》.pdf
- 法院书记员招聘2025年笔试重点考点大全.docx
- 海尔一键恢复.doc VIP
- 2025年黑河嫩江市公开招聘林场管护工作者135人考试备考题库及答案解析.docx VIP
- DBJ08-232-98 道路交通管理设施施工及验收规程.docx VIP
原创力文档


文档评论(0)