![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分治法
摩霄志在潜修羽
骐骥一跃,不能十步。驽马十驾,功在不舍。
展开
-
杭电2899--strange fuction
题目描述: 这题用到了二分法,由于去除-y*x之后,在[0,100]区间内F(x)导数恒大于0,因此加上-x*y后,F(x)会有两种情况: (1)y>0,此时函数可能单增也可能先增后减。 (2)y<=0,此时函数一定单增。 我们只要求出F(x)的导数为0点即可。此函数的极小值点两侧一定先减后增,或者直接减小到极小值点。可以通过二分法不断缩小区间最终确定极小值。 代码如下:...原创 2018-08-05 20:41:07 · 305 阅读 · 0 评论 -
折半查找法
题目描述:分析:经典二分查找算法,实现出来很简单。代码:#include<iostream>#include<string>#include<Windows.h>#include<cstring>#define MAXN 10010using namespace std;int main(){ int n, val; in...原创 2018-10-22 21:47:02 · 221 阅读 · 0 评论 -
POJ2503--神族文字
解析:先对字符串进行排序,再使用二分查找法即可。代码:#include<iostream>#include <algorithm>#include<cstdio>#include<string>#include<Windows.h>#include<cstring>#define MAXN 10010us...原创 2018-10-22 23:17:10 · 610 阅读 · 2 评论 -
魔法石的诱惑
解析:想要完成这道题,首先要知道求n!有多少个0的计算方法。最直观的方法就是计算出n!,然后迭代除以10,直到余数不为零为止。但是这样做显然会超时,并且对于较大数的阶乘,我们无法计算出它的值。因此我们从分析n!的公式入手:不难发现,一个数的阶乘想要末尾含有0,就要同时包括2的倍数和5的倍数(因为2*5=10)又因为2的倍数比5的倍数多(因为是阶乘,含有5的倍数则一定含有2的倍数,反...原创 2018-10-23 16:46:51 · 655 阅读 · 0 评论 -
逃亡
解析:这道题实际上求的是甲(或者乙)从A地到C地所需的时间。想要时间最短且同时到达,就要充分利用自动小车的特点,将示意图画下:假设最初甲乙二人均在A点,那么最优方案就是:甲从A点乘车出发,乙步行;甲到达D点时,开始下车步行,小车从D点返回去接正走到B点的乙,并且在C点与乙相遇;此时乙上车去追赶甲,且刚好在E点相遇。由于路程是单调递增的,因此我们可以使用二分法来确定甲下车的具体位置,从...原创 2018-10-23 18:47:31 · 365 阅读 · 0 评论 -
旋转数组的最小数值(改造二分法)
【题目描述】把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{34512}\{34512\}{34512}为{12345}\{12345\}{12345}的一个旋转,该数组的最小值为1。【思路】我的最初思路:做长度为222的滑动窗口,判断两个数字是否逆序。时间复杂度:O(N)O(N)O(N)更好的方法...原创 2019-04-02 21:39:46 · 144 阅读 · 0 评论 -
查找夹杂空串的顺序字符串
【题目】有个顺序排好的字符串数组,其中随机的插入一些空串,指定一字符串,求其对应的下标。【解析】既然是顺序排好要求查找,就可以使用分治法。字符串的比较使用strcmp()strcmp()strcmp()函数,此题主要考察的是对空串的处理:遇到空串,则将midmidmid下标向左或向右挪到非空串,再进行判断。另外,注意判断查找不到一个串的情况,也就是说它的索引超出了范围仍未找到。【代码】...原创 2019-04-03 19:34:11 · 103 阅读 · 0 评论