algorithm_查找
文章平均质量分 83
theArcticOcean
Website: https://www.weiy.city
Wechat Subscription Account: 胡桃小院
展开
-
折半查找(二分的两种写法)
二分,一种常用的查找方法,时间复杂度O(log2(n)),二分的思想很重要,常常可以减小算法的时间复杂度。一开始自己只是记住了怎样去写,现在研究了一下,有了些新的体会。二分函数的写法并不是只有固定的那一套:low=0; high=n; if(a[mid]>val)high=mid-1; else if(a[mid]输入文件内容:8 4 11 14 18 41 44 51 724原创 2015-06-27 22:42:32 · 1212 阅读 · 0 评论 -
poj 3301 Texas Trip(旋转+三分)
题目:http://poj.org/problem?id=3301大意:给出一些点求出最小的正方形面积把它们都覆盖掉。要解决它我们需要会一些基础知识:坐标旋转公式,三分搜索算法。逆时针旋转:x=xcosθ+ysinθ; y=ycosθ-xsinθ顺时针旋转:x=xcosθ-ysinθ; y=ycosθ+xsinθ原创 2015-08-04 09:15:44 · 771 阅读 · 0 评论 -
RMQ算法
转载地址:http://blog.csdn.net/liang5630/article/details/79177021. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不转载 2015-09-13 20:44:44 · 506 阅读 · 0 评论 -
hdu 5443 The Water Problem(RMQ区间最值)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5443Problem DescriptionIn Land waterless, water is a very limited resource. People always fight for the biggest source of water. Given a sequence o原创 2015-09-13 21:19:44 · 615 阅读 · 0 评论 -
可变的圆 二分?排序?
问题源自ACM-ICPC 北京赛区2015网络赛题目1 : The Cats' Feeding Spots大意是这样的,给出m个点,选其中一个点作为圆心画一个圆能把n个点包含在里面(边界不能有点),求最小的半径,找不到这样的半径输出-1。自己最开始的思路是这样的,以其中一个点作为圆心,然后用伪二分法查找半径(初始化 low=1,high=1416。1000*2^0.5=1414.213),原创 2015-09-20 20:58:34 · 564 阅读 · 0 评论 -
see 二分 again
关于二分的查找我们已经见过了许多,在另一篇博客:http://blog.csdn.net/thearcticocean/article/details/50408776 中用PYTHON写过相关的代码。现在记录两题,也是那种非“==”的二分查找。nefu 610 小郑吃面条http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?probl原创 2015-12-29 21:48:20 · 580 阅读 · 0 评论 -
初次接触分块思想
在练习mobius反演的时候有一题需要用分块的思想来优化,于是第一次听说了分块思想。比较有名的当属号称可以解决所有不修改、离线查询问题的莫队算法。几乎所有的莫队算法的介绍都和[BZOJ]2038 小Z的袜子有关,相关大神博客:http://www.cnblogs.com/kuangbin/p/3263483.html先来个稍简单的分块题:codeforces 86 D. Pow原创 2016-01-21 09:05:19 · 672 阅读 · 0 评论 -
hdu 1316 How Many Fibs?(Fibonacci+高精度+二分)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1316Description我们定义斐波那契数列如下:f1=1f2=2f(n)=f(n-1)+f(n-2)(n>=3) 现在,给定两个数a和b,计算有多少个斐波那契数列中的数在a和b之间(包含边界)。Input输入包含多组测试数据,每组原创 2015-08-13 15:50:08 · 647 阅读 · 0 评论 -
zoj 2340 Little Jumper(三分 物理好题)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1395 大意:青蛙能从一个点跳到第三个点,如图,需要跳两次。问整个过程的最大起跳速度。 大意:青蛙能从一个点跳到第三个点,如图,需要跳两次。问整个过程的最大起跳速度。分析:对于每一次跳跃,设置水平的运动距离总长度是L,到达ti,bi时已经运动的水平距离是S,那么由物体的竖直原创 2016-05-29 17:40:33 · 702 阅读 · 0 评论 -
hdu 1104 Remainder(BFS+数论)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1104RemainderTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3320 Accepted Submission(s)原创 2015-09-04 19:09:02 · 673 阅读 · 0 评论 -
SGU-154 Factorial (末尾0 & 三分)
154. Factorial time limit per test: 0.25 sec. memory limit per test: 4096 KB input: standard input output: standard output You task is to find minimal natural number N, so that N! co原创 2015-08-02 07:47:32 · 524 阅读 · 0 评论 -
hdu 3400 Line belt(多重三分)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3400Line beltTime Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64uSubmit StatusDescriptionI原创 2015-08-28 16:56:20 · 639 阅读 · 0 评论 -
codeforce 493A Vasya and Football
原本只想练练手感,但仍然碰到了麻烦,这题最坑的是被红牌罚下的球员居然能在fouls列表中再次出现,呵呵~注意好这点,认真理清题意后即可顺利完成。#include #include#includeusing namespace std;int n,p1[100],p2[100]; //wirte down foulchar ht[25],at[25];int main(int ar原创 2015-06-28 11:21:14 · 552 阅读 · 0 评论 -
poj 2549 Sumsets(hash)
题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23666a+b+c=d 转化: a+b=d-c。这就变成了查找问题。1000*1000/2=500000,所以需要5e5大的空间装散列表。下面用hash拉链法和开放地址法来实现:拉链法,存储结构即用到了链式前向星的思想。#include #include#原创 2015-07-18 16:51:28 · 821 阅读 · 0 评论 -
poj 3737 UmBasketella(数学推导||三分)
题目:http://poj.org/problem?id=3737我是想练一练三分的,听说这题能用上,但是我做完了也没把三分派上用场(第一种方法)。数学分析一下就能得出结果啊。令圆锥的底面半径是r,高是h,侧面母线是l,由几何知识:圆锥侧面积s1=2*pi*r*l/2=pi*r*l,底面积是s2=pi*r^2。所以s=pi*r*l+pi*r^2. V=(pi*r^2)/3*h. 同时有:l原创 2015-07-31 15:55:04 · 897 阅读 · 0 评论 -
三分搜索算法&hdu 2899 Strange fuction
三分搜索算法:整个算法在最坏情况下的计算时间复杂性为O(log3(n)),每执行一次算法的循环,待搜索数组的大小减少三分之二。对具体n值的数组进行搜索时,虽然三分搜索法在数据搜索时,循环次数减少了,但在一次循环中最坏情况下需要进行数据的两次比较,由于充分利用了待搜索数组的最大数和最小数,在搜索方向的选择上灵活性更强。这是因为三分算法稍加变化可得从大到小方向上的三分法的搜索算法或从小到大方向上的原创 2015-07-31 11:03:53 · 1012 阅读 · 0 评论 -
zoj 2672 Fibonacci Subsequence(hash + dp)
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1672Fibonacci SubsequenceTime Limit: 5 Seconds Memory Limit: 32768 KB Special JudgeA sequence of integer numbers a原创 2015-08-15 20:47:58 · 1440 阅读 · 0 评论 -
hdu 1004 Let the Balloon Rise(trie||映射统计)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1004给出一定数量的字符串,求出出现次数最多的字符串。统计字符串可以用字典树,我用trie做运行了15MS。#include #includeusing namespace std;typedef struct node{ int num; bool fin; struc原创 2015-07-13 14:30:41 · 577 阅读 · 0 评论 -
hdu 1800 Flying to the Mars(字典树||map||hash)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1800给出一堆士兵的等级,等级高的的士兵可以当等级小的士兵的师傅,一个士兵最多一个师傅(可以没有),一个师傅最多1个徒弟(可以没有),如果是师徒关系,可以用一把扫帚练习技能,问:全部士兵都用扫帚练习时需要的最少的扫帚数量?这就是寻找一棵树的最大分支嘛,如果所有的数字均不相同那么必能连成一串,仅需原创 2015-07-13 16:42:23 · 773 阅读 · 0 评论 -
zoj 3421 Error Curves(三分)
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4105大意:很多的函数曲线,二次或一次,要构造这样的新曲线,对于每个x,新曲线对应的Y值是原来所有函数对应值的最大值。要求出新曲线上最小的y值。新曲线还是具有二次曲线的性质,所以应当用三分法来完成查找。对于每条函数曲线都得计算y值,最后选出最大的Y,此处只能暴力原创 2015-07-31 20:46:33 · 536 阅读 · 0 评论 -
python之各种二分查找
很多时候,我们需要在一堆数字查找的不仅仅是目标值,还可能是比它大的,比它小的,大于等于它的,小于等于它的临近值。现在,老师正在验收作业,我无聊的等待。。。写写python,总结一下这些二分。array=[4,2,6,1,45,23,27,12,89,5]# for key:find '==' valuedef midfind(key): length=len(array)原创 2015-12-26 15:35:12 · 1321 阅读 · 0 评论