
ACM的常用算法之二分、三分及相关算法
北冥有鱼555
北大的一枚小博士
展开
-
三分搜索
三分搜索的思想以及相应代码 三分搜索,其实就是求一个区间的最值问题,当然这个区间是有条件的。简单的说,就是把相应区间的点拿出来画到坐标纸上,形成的曲线要么是凹型的要么是凸型的,也就是最值两边是单调的并且最值只有一个。如果符合这个条件就可以用三分求最值了。 二分是把区间分成两块来求,那么三分就是把区间分成三块来求了。 那现在我们假设曲线是凸的,也就是序列a[n]原创 2015-07-26 00:26:17 · 342 阅读 · 0 评论 -
二分算法
二分算法的感想及其实现 二分算法其实是一种思想,在某些情况下是有二进制成分在里面的,比如快速幂的实现。不过二分最常用来在一个有序序列中求特定值。当然这个序列必须是有序的,就是不递减或者不递增的序列,为什么要这样,了解一下二分的原理就知道了,在这里不再叙述,或者看一下接下来的代码就清楚了。 在这里主要叙述一下基本的代码框架,前提假设整个序列是递增的(其他情况类似): 假设原创 2015-07-25 22:52:19 · 651 阅读 · 0 评论 -
快速幂
快速幂的讲解 快速幂之所以快,是因为利用了二分的思想。因为任何数都可以转化成二进制,换句话说,任何数N都可以写成N=2^x+2^x1+2^x2+..........这种形式。那么问题就很好解决了。比如我们要求m^n这个数。那我们可以把n分解为2^x+2^x1+2^x2+..........。那么m^n=m^(2^x+2^x1+2^x2+...........)=(m^2^x)*(m^2原创 2015-07-26 00:48:32 · 366 阅读 · 0 评论