国家集训队论文浅谈信息学竞赛中的“0”和“1”课件_第1页
国家集训队论文浅谈信息学竞赛中的“0”和“1”课件_第2页
国家集训队论文浅谈信息学竞赛中的“0”和“1”课件_第3页
国家集训队论文浅谈信息学竞赛中的“0”和“1”课件_第4页
国家集训队论文浅谈信息学竞赛中的“0”和“1”课件_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WuSen“1与0,一切数字的神奇渊源。这是造物的秘密美妙的典范,因为,一切无非都来自上帝。”WuSen 浅谈信息学竞赛中的“0”和“1” 二进制思想在信息学竞赛中的应用河北省石家庄二中 武森WuSencontent二进制思想在数据结构中的应用二进制思想在数据结构中的应用树状数组二进制思想在解题思想中的应用二进制思想在解题思想中的应用状态压缩模型转化01二叉树WuSen例题一例题一:Matrix 有一个有一个M M* *N N的矩阵,每一个格子中的数是的矩阵,每一个格子中的数是1 1或或0 0,初始时为,初始时为0 0。有两种操作:。有两种操作: 修改一个子矩阵,将子矩阵中的数字全部修改一个子

2、矩阵,将子矩阵中的数字全部0101取反。取反。 查询第查询第x x行第行第y y列的格子中的数字列的格子中的数字。WuSen 如果给定的是一个长度为如果给定的是一个长度为N N的一排格子。的一排格子。退而求其次退而求其次 每次可以修改一个子列中的数字。每次可以修改一个子列中的数字。WuSen 这样,这道题目就变得简单了!这样,这道题目就变得简单了! 根据这个题目中介绍的这个矩阵中的数的特点不是1就是0,这样我们只需记录每个格子改变过几次,即可判断这个格子的数字。WuSen 每次修改的时候,不妨把格子修改的范围(x,y)变成两个点,一个为更改的初始节点x,另一个为更改的终止节点y+1,然后往这列

3、格子中的这两个节点中加 1。修改修改:WuSen 每次修改的时候,不妨把格子修改的范围(x,y)变成两个点,一个为更改的初始节点x,另一个为更改的终止节点y+1,然后往这列格子中的这两个节点中加 1。修改修改:WuSen 每次询问的时候只需计算出每次询问的时候只需计算出SumxSumx就可以就可以求出第求出第x x个格子被修改过几次个格子被修改过几次。查询查询WuSen 每次询问的时候只需计算出每次询问的时候只需计算出SumxSumx就可以就可以求出第求出第x x个格子被修改过几次个格子被修改过几次。查询查询WuSen寻根溯源寻根溯源用上面的方法看看能否解决原来的问题。用上面的方法看看能否解决

4、原来的问题。WuSenWuSenWuSen推而广之推而广之 如果是要处理三维的情况,甚至如果是要处理三维的情况,甚至N N维的维的情况呢?情况呢? 一般的数据结构能解决吗?一般的数据结构能解决吗?不能!不能!怎么办呢?怎么办呢?WuSen二进制思想二进制思想 二进制思想在数据结构中的应用:二进制思想在数据结构中的应用: 树状数组中的每一个元素的编号变成了二树状数组中的每一个元素的编号变成了二制制编码,再通过这些二进制编码末尾的编码,再通过这些二进制编码末尾的0 0的个数来的个数来决定存储什么信息,假设节点编号为决定存储什么信息,假设节点编号为x x,那么这,那么这个节点存储数据的区间为个节点存

5、储数据的区间为2k(其中(其中k k为为x x二进制二进制末尾末尾0 0 的个数)个元素。的个数)个元素。 又由于每个十进制数转化成二进制位的话又由于每个十进制数转化成二进制位的话,1 1的个数最多只有的个数最多只有O(logN)O(logN)个,所以,复杂度个,所以,复杂度只有只有O(logN)O(logN)。WuSen具体操作具体操作:2k:X and X插入或删除插入或删除:While x0 doBeginSum:=sum+cx;X:=x-(x and x);End;WuSen树状数组树状数组优势优势 代码长度短,不易出错代码长度短,不易出错。 思想巧妙,思想巧妙,算法复杂度低算法复杂度

6、低。 维护简单,空间消耗低维护简单,空间消耗低。 易推广到二维甚至三维易推广到二维甚至三维等等。等等。 WuSen例题二:Cow Xor农民约翰在喂奶牛的时候被另一个问题卡住了。他的所有N(1 =N = 100,000)个奶牛在他面前排成一行(按序号1.N 的顺序),按照它们的社会等级排序。奶牛#1 由最高的社会等级,奶牛#N 最低。每个奶牛同时被赋予了一个唯一的数在0.221 -1的范围内。帮助农民约翰找出应该从那一头奶牛开始喂,使得从它开始的某一个连续的子序列上的奶牛的数的异或值最大。如果有多个这样的子序列,选择结尾的奶牛社会等级最高的。如果还不唯一,选择最短的。WuSen 直接枚举起始点

7、和终结点直接枚举起始点和终结点 ?时间时间复杂度是复杂度是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-1WuSen二进制思想二进制思想 数的范围在数的范围在0.20.22121 1 1的整数的整数 把这些数转化成二进制只有把这些数转化成二进制只有2121位位 有用吗?有用吗? Of Course!WuSen0101二叉树二叉树顾名思义,树的节点的值为顾名思义,树的节点的值为0 0或或1 1。

8、WuSen插入插入 每次插入的时候,根据这个数的二进每次插入的时候,根据这个数的二进 制数进行建树,第制数进行建树,第i i位是位是1 1则向左儿子则向左儿子 建一条边,反之向右儿子建边。建一条边,反之向右儿子建边。WuSen插入插入 每次插入的时候,根据这个数的二进每次插入的时候,根据这个数的二进 制数进行建树,第制数进行建树,第i i位是位是1 1则向左儿子则向左儿子 建一条边,反之向右儿子建边。建一条边,反之向右儿子建边。WuSen查询查询 每次查询的时候,用贪心的思想根每次查询的时候,用贪心的思想根 据这个数的二进制数进行,第据这个数的二进制数进行,第i i位是位是 1 1如果有右儿子

9、则向右儿子进行,反如果有右儿子则向右儿子进行,反 之向左儿子进行。之向左儿子进行。WuSen查询查询 每次查询的时候,用贪心的思想根每次查询的时候,用贪心的思想根 据这个数的二进制数进行,第据这个数的二进制数进行,第i i位是位是 1 1如果有右儿子则向右儿子进行,反如果有右儿子则向右儿子进行,反 之向左儿子进行。之向左儿子进行。WuSen这样,每次插入和查询的时间复杂度这样,每次插入和查询的时间复杂度为为O(logN)的,对与这道题目整体的的,对与这道题目整体的时间复杂度为时间复杂度为O(NlogN)。这道题目完美解决这道题目完美解决 WuSen总结总结 二进制思想在信息学竞赛中的应用,巧妙的运二进制思想在信息学竞赛中的应用,巧妙的运用了十进制数与二进制数之间的关系,用了十进制数与二进制数之间的关系,不仅在数不仅在数据结构中有广泛应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论