二进制
文章平均质量分 78
WilliamSun0122
这个作者很懒,什么都没留下…
展开
-
2015-ICPC-ShangHai-B-hdu5573-构造+二进制
题意给你一个二叉树,根节点为1,从根节点开始依次向下走k层,问如何走使得将路径上的数进行加减最终结果得到n。题解首先我们要知道1、2、4…2^k可以构造出所有小于2^(k+1)的数,那么实际上只要走2的幂次即最左边的结点即可。 根据题意,树的最左边最下一层数为2^(k-1),所以当我们走最左一层时,我们能得到小于2^k的所有数。 由数据范围N<=2^k,可知,我们只需要用二叉树的最左边一列k个(即原创 2017-03-27 17:24:03 · 499 阅读 · 0 评论 -
树状数组总结
了解树状数组树状数组这个数据结构是在设计压缩算法时被发现的。我觉得其中最重要的是运用了二进制的思想。(这个接下来会重点说)树状数组的用途就是维护一个数组,重点不是这个数组,而是要维护的东西,最常用的求区间和问题,单点更新。但是某些大牛很6,完成部分线段树能完成的功能,比如区间更新,区间求最值问题。树状数组是一个可以很高效的进行区间统计的数据结构。在思想上类似于线段树,比线段树节省空间,编程复杂度比线原创 2017-04-25 11:01:27 · 477 阅读 · 0 评论 -
RMQ-ST 详细讲解 poj3264为例
首先介绍一下什么是RMQ。RMQ (Range Minimum/Maximum Query)问题是指求区间最值的问题,这个问题用线段树同样可以解决。线段树解决方法STST算法是解决RMQ问题较优的算法,它是基于动态规划和位运算实现的。它可以通过O(nlognnlogn)的预处理对每次查询在O(1)时间得出答案,是一个很快速的算法。我们设dp[i][j]是区间[i,i+2j2^j-1]的最值,对于该区原创 2017-09-09 09:11:19 · 347 阅读 · 0 评论