自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (1)
  • 收藏
  • 关注

原创 中国剩余定理解法

问题表述 《孙子算经》卷下第二十六问:“今有物,不知其数。三、三数之,剩二;五、五数之,剩三;七、七数之,剩二。问物几何?答曰:二十三。”即 x%3=2;x%5=3;x%7=2;  》》  x=23+3*5*7*k表述成定理为:给m个两两互质的数,其乘积为P,若已知x以m=2为例,设为a,b,令x=1~a*b;x mod a 的结果为 (0,1,

2013-07-01 15:34:13 1023

原创 近邻搜索之制高点树(VP-Tree)

引子近邻搜索是一种很基础的又相当重要的操作,除了信息检索以外,还被广泛用于计算机视觉、机器学习等领域,如何快速有效的做近邻查询一直是一项热门的研究。较早提出的方法多基于空间划分(Space Partition),最具有代表性的如kd-tree(kdt),球树等。本篇将介绍基于空间划分方法中的一种,制高点树(Vantage Point Tree,vpt),最初在1993年提出,比kdt稍晚,

2013-01-11 13:29:32 10018 5

原创 大数的c++实现,包括加减乘法

采用vector实现的大整型数类,重载了 +,-,*,+=,-=,*= 操作符;通过了 poj 2389 大数乘法的测试数据;别的不多说,上代码,供大家学习交流。#ifndef BIG_INT_HEAD#define BIG_INT_HEAD#include#includeusing namespace std;class BigInt{private: vector

2012-11-23 14:03:25 611

转载 “...最好的学生会去转行”续:我为什么逃离科研

转自人人在来美国的前一天晚上和程老师吃饭的时候,师兄告诉我们程老师下午发的博客已经上科学网首页了,但当时也只有40多个回复而已,我们也没有在意,毕竟程老师的博文经常上科学网首页。当晚我们并没有继续讨论我工作选择的事情,而是像往常一样随便侃了侃,甚至还讨论了点学术问题。回宿舍以后我还跟几个好友开玩笑的说“哥出名了,上科学网首页了”。但没想到的是,我真的出名了,第二天我下飞机开了手机以后,短信不断

2012-11-19 10:04:07 1055

原创 Alias Method for Sampling

Milo老湿在他的博文 用JavaScript玩转游戏编程(一)掉宝类型概率 中提到了游戏中按一定概率掉宝的算法,即根据给定的PDF(probability density function),在线性时间内算出对应的CDF(cumulative distribution function),然后进行取样。一个例子如下:PDFval1234pr

2012-11-14 14:58:48 3342 1

原创 笔试题之寿命估计

题目:已知国人的平均寿命是70岁,某人已活到60岁,问他的预期寿命是多少?分析:不妨使用这样一个简化的模型,设最大寿命为MAX,用D(i) 表示在第 i 岁去世的概率,那么活到第 j 岁的概率L(j) = (1-D(0))*(1-D(1))*...*(1-D(j));(0)若一个人已经活到60岁了,那么他活到 x 岁的概率p(x) = (1-D(61))

2012-11-12 14:28:54 594 2

原创 求无序数组的(max+min)最大的子数组

题目意思就是,给出一个无序的数组,均为正数,要找一个子数组,使得该子数组内的最小值加上最大值能取到最大。例子: 3 9 2 7 1 5 8 能取到的(max+min)最大的子数组为(5,8)。 仔细观察就能发现,求这个子数组的一个要点就是最小值的位置。如上面例子所示,最小值为 1,那么如果 1 被包含进子数组的话,最大也只能取到 1+max,这不如max加上另外任意一个

2012-10-27 00:08:46 636 1

原创 插入最少字符使得只含数字,+,(,)的算式合法化

比如输入  2(+(5+1( ) ,那么 2+(1+(5+1+(1)))  是一种解法。注意:插入的也只能是这4种字符。 ( )非法,((12))合法这里提供一个思路,就是首先处理括号,再处理其它;并且添加的括号只加在开头和结尾;这样做是基于以下的事实:1. 在中间加入括号可能产生新的非法串,如 “)(” ,在首尾则不会;2. 在中间加括号无法使得修改步数更少。具体的,

2012-10-23 00:06:28 422

原创 N个鸡蛋放入M个篮子且能组合出1~N所有的数

貌似是一道面试题,要求篮子不能为空,且要求出所有可能的放法。如8个鸡蛋放入4个篮子,可以放 1,1,2,4;也可以放 1,2,2,3。分析:不妨以递增的次序来排放鸡蛋,即若第一次放1个,第二次至少放1个。在这个限制下,设前m个篮子放了n个鸡蛋,那么这m个篮子要能组合出1~n内的所有数。反证法:假设无法凑出 x,有1一定存在y左边的

2012-10-17 15:36:05 1445

原创 猫鼠博弈

一道有意思的博弈题:一个巨大的圆形水池,周围布满了老鼠洞。猫追老鼠到水池边,老鼠未来得及进洞就掉入水池里。猫继续沿水池边缘企图捉住老鼠(猫不入水)。已知V猫=4V鼠。问老鼠是否有办法摆脱猫的追逐?提示:转圈

2012-09-02 10:52:46 1130

原创 python一个URL拼接的写法

此方法来自网络,很强大from urlparse import urljoinfrom urlparse import urlparsefrom urlparse import urlunparsefrom posixpath import normpathdef myjoin(base, url): url1 = urljoin(base, url) arr = u

2012-07-20 18:09:57 10344

原创 POJ 2054---Color a Tree

题目链接:poj2054很好的一道贪心题,是边计算边贪心,此外,理解思路是难点一,实现是难点二,可以说思路和实现都很需清晰的头脑。#include using namespace std;/***好题!discuz上有N=1000的数据,思路是一下两点: 1.在未访问的node中,权重最大的点应该在访问它的父亲后马上访问,依此进行点的合并; 2.合并后点的权重相当于其所包含原

2012-06-25 14:36:17 616

原创 习题6.44

题目:给两个字符串A,B,长度为n,判断A通过循环移位能否变为B,要求O(n)将A变为AA,然后使用KMP算法。

2012-04-25 22:03:21 281

原创 习题6.29

题目:输入是 d 个有序序列,共n个元素,要求在 O(nlogd) 时间复杂度下合并归并排序,两两合并

2012-04-25 21:44:49 527

原创 习题6.28

题目:输入数组x,a;根据a中的值作为序列号重新排列x,要求只能使用swap操作,时间复杂度O(nlogn)对a数列进行快排,所有的swap操作也对x数组进行相同操作即可。扩展题:若a=[1,3,5,7,9,...,2,4,6,8,10...];能否在O(n)时间内做到??

2012-04-25 21:39:54 214

原创 习题6.25

同样考虑二分法,输入是两个集合A,B;分割数为a的话,有F(A,B) = F(A1,B1) + F(A2,B2)复杂度为O(nlogn)这几道题都是类似的,每个都比一遍的话是O(n^2),通过分割,互相需要进行比较的部分被压缩了,因此降低了复杂度。

2012-04-25 16:33:24 418

原创 习题6.22

由于输入是实数,因此不方便使用hash映射。a先排序,然后参照 b 算法。采用二分法,之后和6.23算法类似,可以使用6.23中间的函数 f23 ;分割数为a,若a+a b从两头开始,相加小于x,将左边下标右移,否则将右边下标左移。

2012-04-25 16:23:51 361

原创 习题6.23

采用二分法,输入为集合A,B,x;对集合进行二分的基准数分别为a,b;假设a+bF(A,B) = F(A1,B2) + F(A2,B1) + F(A2,B2)问题规模预期可以缩小1/4,复杂度仍为O(nlogn)

2012-04-25 16:13:21 403

原创 习题6.19

根据题意,只需要找到一个满足条件的 j ,使用二分查找即可,最坏情况需要 log(n)次比较。注意:需要一个bool量来记录下一次要找大于z的还是小于z的那段

2012-04-25 15:44:29 1107

原创 编程珠玑 习题 十二章

注:以下皆为个人理解,非标准答案12.5.1:bigrand:rand函数随机产生15位,那么用两次rand函数再拼接起来就形成了30个随机位randint(l,u):将rand出的数映射到l,u 之间即可,一个实现方法是mod(u-l)+l 12.5.8:[0..n-1] 中选取 m 个数并乱序输出:先用12.1中的算法产生选出的m个数,然后进行洗牌算法(12

2012-03-27 22:09:29 368

原创 使用 python 操作 Oracle (一)

准备工作:在机器上安装Oracle Database,这里版本是11g,据说也可以只安装客户端。然后下载对应的cx_Oracle,使得python能够支持oracle,使用python连接Oracle的第一次测试可能会出问题,一个典型的错误是 “DLL Load failed”,网上的一般建议是把oci.dll 文件放入到python的site-package文件夹下面,该DLL文件可以直

2012-03-25 15:55:23 587

原创 python 的sitecustomize.py

sitecustomize.py 是python中的一个特殊脚本,可以放在目录下的任意位置,不过一般放在home\Lib\site-packages下面,当python开始运行时会先运行该脚本中的代码,因此可以用来设置一些default的东西。一个用途就是用来设置python的默认编码,在import sys后,可以使用sys.getdefaultencoding()函数查看默认编码,

2012-03-17 13:53:21 6649

原创 记python开发网络爬虫所遇问题

最近几天一直在写网络爬虫,用的是python,图的是方便省事,不过中间确实遇到过几次让人头疼的问题,现记录如下:一.建立网络链接的问题使用的是python提供的urllib2模块,用urllib2.urlopen()函数建立链接,该函数抛错率高,还可能不响应,因此要设定timeout,并使用try except else来容错。二.从链接中读取数据的问题使用urlo

2012-03-09 17:08:14 1344

原创 几道算法题--记下

一. 海量数据求中位数,比如10G的int64的数,求排序后最中间的数首先,若能全部放入内存中,那么可以使用类似快排的算法,每次保留包含中位数的那段数据,直到找到中位数;那么海量数据显然无法一次性放入内存,如何每次减少数据呢?一个自然的思路就是分成若干段(大小能放入内存中),也使用之前的算法,但是该舍弃哪一段显然要在整体上来判断;我的思路是引入一个基准数X,所有的段都使用X进行partitio

2012-03-08 10:45:29 300

minix3下的简单shell

minix3下的shell,实现了如下命令: cd,递归实现的多重管道,重定向,后台命令符 以及一些基本命令:ls,pwd等

2009-07-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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