- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
这样,每次插入和查询的时间复杂度为O(logN)的,对与这道题目整体的时间复杂度为O(NlogN)。 WuSen “1与0,一切数字的神奇渊源。这是造物的秘密美妙的典范,因为,一切无非都来自上帝。” 浅谈信息学竞赛中的“0”和“1” —二进制思想在信息学竞赛中的应用 河北省石家庄二中 武森 content 二进制思想在数据结构中的应用 树状数组 二进制思想在解题思想中的应用 状态压缩 模型转化 01二叉树 例题一:Matrix 有一个M*N的矩阵,每一个格子中的数是1或0,初始时为0。有两种操作: 修改一个子矩阵,将子矩阵中的数字全部01取反。 查询第x行第y列的格子中的数字。 如果给定的是一个长度为N的一排格子。 退而求其次 每次可以修改一个子列中的数字。 这样,这道题目就变得简单了! 根据这个题目中介绍的这个矩阵中的 数的特点不是1就是0,这样我们只需记录 每个格子改变过几次,即可判断这个格子 的数字。 每次修改的时候,不妨把格子修改的范围(x,y)变成两个点,一个为更改的初始节点x,另一个为更改的终止节点y+1,然后往这列格子中的这两个节点中加 1。 修改: 每次修改的时候,不妨把格子修改的范围(x,y)变成两个点,一个为更改的初始节点x,另一个为更改的终止节点y+1,然后往这列格子中的这两个节点中加 1。 修改: 每次询问的时候只需计算出Sumx就可以 求出第x个格子被修改过几次。 查询 每次询问的时候只需计算出Sumx就可以 求出第x个格子被修改过几次。 查询 寻根溯源 用上面的方法看看能否解决原来的问题。 推而广之 如果是要处理三维的情况,甚至N维的 情况呢? 一般的数据结构能解决吗? 不能!! 怎么办呢??? 二进制思想 二进制思想在数据结构中的应用: 树状数组中的每一个元素的编号变成了二制 编码,再通过这些二进制编码末尾的0的个数来 决定存储什么信息,假设节点编号为x,那么这 个节点存储数据的区间为2k(其中k为x二进制 末尾0 的个数)个元素。 又由于每个十进制数转化成二进制位的话,1的个数最多只有O(logN)个,所以,复杂度只有O(logN)。 具体操作: 2k:X and –X 插入或删除: While x=max do Begin C[x]:=c[x]+delta; X:=x+(x and –x); End; 查询: While x0 do Begin Sum:=sum+c[x]; X:=x-(x and –x); End; 树状数组 优势 代码长度短,不易出错。 思想巧妙,算法复杂度低。 维护简单,空间消耗低。 易推广到二维甚至三维等等。 例题二:Cow Xor 农民约翰在喂奶牛的时候被另一个问题卡住了。他的所有N(1 =N = 100,000)个奶牛在他面前排成一行(按序号1..N 的顺序),按照它们的社会等级排序。奶牛#1 由最高的社会等级,奶牛#N 最低。每个奶牛同时被赋予了一个唯一的数在0..221 -1的范围内。帮助农民约翰找出应该从那一头奶牛开始喂,使得从它开始的某一个连续的子序列上的奶牛的数的异或值最大。如果有多个这样的子序列,选择结尾的奶牛社会等级最高的。如果还不唯一,选择最短的。 直接枚举起始点和终结点 ? 时间复杂度是O(N*N) Impossible!!! 根据异或的性质,可以得出以下结论: Sumk=a1 xor a2 xor a3… ak-1 xor ak ai xor ai+1 … aj-1 xor aj=Sumj xor Sumi-1 二进制思想 数的范围在0..221 – 1的整数 把这些数转化成二进制只有21位 有用吗??? Of Course!!! 01二叉树 顾名思义,树的节点的值为0或1。 插入 每次插入的时候,根据这个数的二进 制数进行建树,第i位是1则向左儿子 建一条边,反之向右儿子建边。 插入 每次插入的时候,根据这个数的二进 制数进行建树,第i位是1则向左儿子 建一条边,反之向右儿子建边。 查询 每次查询的时候,用贪心的思想根 据这个数的二进制数进行,第i位是 1如果有右儿子则向右儿子进行,反 之向左儿子进行。 查询 每次查询的时候,用贪心的思想根 据这个数的二进制数进行,第i位是 1如果有右儿子则向右儿子进行,反 之向左儿子进行。 这道题目完美解决~ WuSen
您可能关注的文档
最近下载
- 乐谱_G小调室内协奏曲,RV 107(维瓦尔第,安东尼奥)Chamber Concerto in G minor, RV 107 (Vivaldi, Antonio).pdf VIP
- 药用植物栽培技术(第3版)PPT课件-第四章-药用植物的繁殖技术.pptx
- 第7章 车辆设备及其布置《城市轨道交通车辆》教学课件.ppt VIP
- 科级领导干部2024年度民主生活会对照检查发言提纲.docx VIP
- 一种二甲基亚砜的回收系统、回收方法及其所得二甲基亚砜.pdf VIP
- 黑布林阅读初二11《杰克的威士本游园会》中文版.pdf
- 正月初七-人日节介绍.pptx VIP
- 模块3 车辆设备及其布置《城市轨道交通车辆机械》教学课件.pptx VIP
- 碱性硫化钠浸出含锑金精矿的试验与工业实践.doc
- 规划课题申报范例:儿童人工智能素养发展评价指标体系研究(附可修改技术路线图).docx VIP
文档评论(0)