二分查找中的死循环

二分算法是我们经常会用到的一个算法。它是分治法的一个应用。不过,虽然他写起来貌似很简单,但是却很容易写错。下面我们讨论一下二分的死循环问题。(这里讨论的是整数的二分问题,浮点数的二分不容易死循环) 1.查找的元素确定,值唯一或者不存在         这种情况等下,我们的流程分为三个分支:(...

2014-09-13 17:35:37

阅读数:2093

评论数:2

斐波纳契数列(Fibonacci Sequence)

斐波纳契数列(Fibonacci Sequence)  0.前言 很久以前就想写一些竞赛学习的总结,但是由于之前事情比较多,导致计划不断的减缓。现在,大学教学任务的考试已经全部结束了,而比赛也告一段落,所以有时间来整理一下之前学过的东西。不久前,在做比赛的时候遇到了这样一个问题:求出第N个斐波...

2012-11-25 14:21:15

阅读数:2268

评论数:0

UVa 183 - Bit Maps

题目 黑白图片存储有两种格式:位图格式和压缩格式; 位图格式:使用一个矩阵(元素为01)来表示一个黑白图片; 压缩格式:图像是单一颜色(全都是0或1),则图像为对应的值(0或1),否则图像的值为D,并将图形分成四个矩形(不能平均分时左侧和上侧多取一个像素),分别判断四个子图像,...

2018-04-04 14:04:59

阅读数:54

评论数:0

UVa 11115 - Uncle Jack

题目:求N^D。 分析:分治,快速幂,大整数模拟。利用数组模拟大整数快速幂。 说明:打表加快速度。应该写一个大整数类了。 #include #include #include using namespace std; class BigInteger { private: i...

2018-01-01 17:10:45

阅读数:138

评论数:0

UVa 11683 - Laser Sculpture

题目:利用激光切割机切削一个矩形的材料,每次只能从上向下切掉1mm后的矩形,             问切削成如下给出的形状需要切削多少次。 分析:线段树,数据结构。将图形看成是二叉树,从上往下按最高的点分段即可。             整个切削过程遇到极大值点就会分成两段,就是一个构造二...

2017-07-24 16:38:44

阅读数:131

评论数:0

UVa 11157 - Dynamic Frog

题目:有一只青蛙要去对岸找东西然后返回,因为河水被污染了,所以只能踩着石头过河,             石头有两种:B石头可以无限次使用,S石头使用一次就沉下去了,计算一个路径,             使得最长的跳跃距离最小。 分析:贪心,二分。二分最大长度,利用贪心判定是否可以跳过去再回来。...

2017-07-19 16:34:12

阅读数:283

评论数:0

hdu 2035 - 人见人爱A^B

題目:計算A^B的后三位。 分析:數論,分治。利用mod的性質和分治快速模冪算法求解。 說明:╮(╯▽╰)╭。 #include #include using namespace std; int fpow(int a, int n, int mod) { if (n == 1) { ...

2016-04-28 09:34:24

阅读数:266

评论数:0

UVa 1230 - MODEX

題目:計算x^y mod n的值。 分析:分治,快速模冪。赤果果的快速模冪。 說明:╮(╯▽╰)╭。 #include #include typedef long long LL; LL mpow(LL a, LL n, LL m) { if (n == 1LL) return a...

2015-11-23 10:15:32

阅读数:344

评论数:0

UVa 11149 - Power of Matrix

题目:一直方阵A,计算A + A^2 + A^3 + ... + A^n。 分析:分治,快速模幂。             设F(n)= A + A^2 + A^3 + ... + A^n则有;             F(n)= F(n/2)+ F(n/2)* A^(n/2)+ R;(n为奇数存...

2015-05-11 23:41:28

阅读数:977

评论数:0

UVa 10689 - Yet another Number Sequence

题目:给你Fib数列的前两项,求第n项的后m位的值。 分析:矩阵快速模幂。见本博客的:斐波那契数列 说明:╮(╯▽╰)╭。 #include #include #include #include #include #include using namespace std; c...

2015-05-11 20:34:20

阅读数:525

评论数:0

UVa 10385 - Duathlon

题目:有一个比赛分成跑步和骑车两部分,总长度一定(L),最后的参赛者贿赂了裁判,             裁判会调节两部分的比例,他想要求超过第二名的最大值。 分析:三分求单峰函数最值。设第一部分长度是x,第二部分的长度是L-x,t(x)= x / v +(L-x)/ u;         ...

2015-05-10 23:59:35

阅读数:977

评论数:0

UVa 1476 - Error Curves

题目:给你n条开口向上的二次曲线Si(a>0),定义F(x) = max(Si(x)),求F(x)的最小值。 分析:三分。F(x)是一个单峰函数,先单调递减后单调递增,利用三分求最小值。                          首先,证明两个二次函数构造的F2(x)为单峰函数; ...

2015-05-10 09:28:29

阅读数:721

评论数:1

UVa 10509 - R U Kidding Mr. Feynman?

题目:函数的渐进解,利用式子f(x+dx)= f(x)+ f`(x)dx,求x+dx;             其中x为f(x)处理求解的整数解,反推dx = (f(x+dx)- f(x))/f`(x)。 分析:分治。这里f(x) = x^3,直接利用二分求解x的最近整数解,然后接dx = (...

2015-02-16 21:12:13

阅读数:796

评论数:0

hdu 1007 - Quoit Design

题目:最近点对。 分析:分治。UVa 10245类似物,这里要优化一下计算两个区间各取一点的情况,提高效率。             在计算两个集合各取一点定位情况同水平方向一样,将点按竖直方向排序,利用单调性;             减少计算次数可以提高效率。 说明:UVa和uhunt...

2015-01-31 16:34:10

阅读数:534

评论数:0

UVa 486 - English-Number Translator

题目:给你一个数字的英文写法,翻译成阿拉伯数字(没有and)。 分析:模拟,递归。这个可以用很多方法求解吧。             这里利用递归,将数字分成几个部分的和(只考虑百万,千,万),分别求解相加即可。 说明:(⊙_⊙)。 #include #include #include...

2014-12-02 21:02:45

阅读数:2066

评论数:0

UVa 11428 - Cubes

题目:给定一个正整数N求出满足N = x^3 - y^3的y最小的正整数对(x,y)。 分析:数论,分治。             x^3 - y^3 = (x-y)(x^2 + xy + y^2);             因为,x、y都是正整数,且x > y,则x^3 - y^3 ...

2014-10-28 11:09:12

阅读数:1678

评论数:0

UVa 11621 - Small Factors

题目:找到不小于给定数n的,仅以2,3为因数组成的数字。 分析:数论,贪心,分治。             利用两根指针,分别代表乘2,与乘3的队列,队列为至今生成的数字,初始为{1};             然后,每取两个指针对应元素*2和*3的值中最小的即为未找到的数字中最小的;  ...

2014-10-25 15:40:24

阅读数:1237

评论数:0

UVa 11614 - Etruscan Warriors Never Play Chess

题目:有这样一种编排,第一组有1个人,第二组有2个人,..,第k组有k个人,现在有n个人,问能构成前几组。 分析:数论,分治。显然这个序列是一个前k项和,那么输出(k+1)*k /2不超过n的最大k值即可;二分或开方。 说明:数据较大,用long long。 #include #inclu...

2014-10-22 19:52:16

阅读数:793

评论数:0

UVa 10297 - Beavergnaw

题目:如果一个底边与高为D的圆柱切去一部分使得,剩下的中心是底边与高为d的圆柱,               和以他们底面为上下地面的圆锥台,已知切去的体积,求d。 分析:二分,计算几何。圆锥台体积公式:π*(r^2+r*R+R^2)*h / 3。 说明:可以直接用公式求指数计算。 #in...

2014-10-14 12:39:19

阅读数:1044

评论数:0

UVa 10539 - Almost Prime Numbers

题目:Almost Prime Numbers是只有一个素数因子的数,统计一个区间中的Almost Prime Numbers。 分析:数论,分治。根据定义可知Almost Prime Numbers就是素数的幂(大于1次)。             首先,利用筛法计算出1000000内的素数...

2014-10-08 18:02:39

阅读数:2088

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭