April 17th, 2011矩阵相关

http://hi.baidu.com/fzu_saber/blog/item/508911445c740a2fcefca352.html



April 17th, 2011递归&贪心

http://hi.baidu.com/uuriel/blog/item/9752e0f65a7e5b2b720eecce.html



April 17th, 2011mysql big num udf

直接利用 gnu gmp 库来搞。
gcc -c bigint.c -I/root/src/mysql-5.1.56/sql -I/root/src/mysql-5.1.56/include -I/root/src/mysql-5.1.56/regex -I/root/src/mysql-5.1.56 -g -O2 -Wall -g -fno-exceptions -shared -fPIC -DPIC -DMYSQL_DYNAMIC_PLUGIN -L/usr/local/mysql/lib -rdynamic -L/usr/local/mysql/lib/mysql -lz -lpthread -lcrypt -lnsl -lm -lpthread -lgmp

gcc -o bigint.so -shared bigint.o -lgmp
Read the rest of this entry »



April 15th, 2011组合数学文章

http://www.cppblog.com/sdfond/category/10266.html

http://hi.baidu.com/acmdearway/blog/category/%D7%E9%BA%CF%CA%FD%D1%A7

baidu 一快照

http://hi.baidu.com/ofeitian/blog/item/ceb99a614f1f604aebf8f8be.html



April 5th, 2011connect 的超时

connect 默认好像没法控制超时。但是可以将 connect 的描述符设置为非阻塞,然后用 select 来控制的办法。
先 socket,设置为非阻塞,然后调用 connect,如果出错的 errno 是 EINPROGRESS,则调用 select 在描述符上等待可读和可写。

http://sue602.blog.163.com/blog/static/314953072010102422418685/

http://blog.csdn.net/chensichensi/archive/2010/01/28/5264481.aspx



April 4th, 2011随机算法

http://www.cnblogs.com/asuran/archive/2009/11/24/1609462.html



April 4th, 2011洗牌算法

http://22andy22.blog.163.com/blog/static/54441693200910373919392/

Read the rest of this entry »



April 4th, 2011随机取样

一个不知道有多少条目的文件 每个条目一行 类似下面的结构
sdfgdfsgdfsgf
ertyrteyrtye
ytuityuityuityui
etrwtwetewtwt
.....
要求从头到尾只遍历一遍,等概率取其中100个条目。
Read the rest of this entry »



April 1st, 2011沙漠穿越问题

经典趣味数学—穿越沙漠
沙漠气候条件极其恶劣,缺少水或动植物,穿越沙漠成为人类探险的最为艰苦的活动之一,数学趣题也因此和穿越沙漠挂上了钩。
一、问题的表述
穿越沙漠是一类趣味数学问题的总称。这个问题流行着多种版本,已很难追踪溯源了。在这里给出几种典型的表述:
(1)沙漠汽车。一辆汽车独自要穿越600公里的沙漠。已知汽车油箱只能装45升油,行走450公里。问汽车怎样行驶才能穿越沙漠,而且用最少的油?
(2)沙漠科考。一个科学家进行一次沙漠科考探险,需要5天。他一次只能带4天的给养。 科学家要独自完成科考,应该怎样安排行程,并使得总的给养消耗最少?
(3)沙漠骆驼。一个商人骑一头骆驼(毛驴,骡子)要穿越1000公里长的沙漠,去卖 3000根胡萝卜。已知骆驼一次性可驮1000根胡萝卜,但每走一公里又要吃掉一根胡萝卜。商人最多可卖出多少胡萝卜?
Read the rest of this entry »



March 31st, 2011小球称重问题

参考这个页面
算法合集之《一类称球问题的解法》
Read the rest of this entry »



March 29th, 2011智力题 2

100个人回答五道试题,有81人答对第一题,91人答对第二题,85人答对第三题,79人答对第四题,74人答对第五题,答对三道题或三道题以上的人算及格,那么,在这100人中,至少有( )人及格。

100-(500-81-91-85-79-74)/3=70
道理就是:至少多少人及格等于至多多少人不及格,总共错了90(19+9+15+21+26)道题目,把90道错题进行资源的最大化利用,因为只有错3题或3题以上才不及格,因此,为了使不及格的人最多(及格人数最少),那么就看90道错题怎么分配,才能让更多的人人错3题或3题以上.显然,平均分给30人,这样30人都是各错3题.30人不及格!70人及格!而一但有人错多了,那么必然有人错少了,而这个少错的人只能错1或2题,他是符合及格条件的!因此,如果有人错3题以上,那么不及格人数就会少于30!相应地,会有超过70人成绩及格!

10箱黄金,每箱100块,每块一两,有贪官,把某一箱的每块都磨去一钱,请称一次找到不足量的那个箱子。
10个箱子编上号,分别为1~10号。 1号箱取一块,2号箱取2块,3号箱取3块,依此类推…… 共取出55块黄金,放在一起称量一次,正常情况下应该是55两。如果少一钱,说明贪的是1号箱,如果少两钱,说明贪的是2号箱,如果少三钱,说明贪的是3号箱,依此类推……

有十瓶药,每瓶里都装有100片药(仿佛现在装一百片的少了,都是十片二十片的,不管,咱们就这么来了),其中有八瓶里的药每片重10克,另有两瓶里的药每片重9克。用一个蛮精确的小秤,只称一次,如何找出份量较轻的那两个药瓶?
第一个瓶可拿出1片,第二个拿2片,第三个拿3片,但第四个不能拿4片,因为如果结果缺了5克的话,你就不知道是缺了2+3还是1+4。所以第四个应拿5片,第五个应拿8片,。。。。

你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1.只称量一次,如何判断哪个罐子的药被污染了?
1号罐取1丸,2号罐取2丸,3号罐取3丸,4号罐取4丸,称量该10个药丸,比正 常重量重几就是几号罐的药有问题。

对一批编号为1~100,全部开关朝上(开)的灯进行以下操作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后为关熄状态的灯的编号。
对一批编号为1-100,全部开关朝上(开)的灯进行以下操作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后为关熄状态的灯的编号是哪些?若实际操作求解会相当繁琐。我们知道,就某个亮着的灯而言,如果拨其开关的次数是奇数次,那么,结果它一定是关着的。根据题意可知,号码为N的灯,拨开关的次数等于N的约数的个数,约数个数是奇数,则N一定是平方数。因为10=100,可知100以内共有10个平方数,即,最后关熄状态的灯共有10盏,编号为1、4、9、16、25、36、49、64、81、100

假设排列着100个乒乓球,由两个人轮流拿球装入口袋,能拿到第100个乒乓球的人为胜利者。条件是:每次拿球者至少要拿1个,但最多不能超过5个,问:如果你是最先拿球的人,你该拿几个?以后怎么拿就能保证你能得到第100个乒乓球?
先拿4个。
然后对方如果拿1到5个我就拿5到1个。于是无论如何剩下的球数为6n,n逐次少1,最后剩6个的时候恰好是我拿完,此时必胜。

一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?
问“你的国家怎么走?” 他们都会指向诚实国

一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什幺帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?
解答:
如果有一顶黑帽子,那么第一次关灯就会打自己,因为他看那别人都是白的,自己肯定黑的。
如果有2顶黑帽子,那么第二次关灯就会打自己,因为他看到别人只有一顶黑帽子,然而根据上面的推论,如果只有一顶黑帽子,则第一次就会打自己,所以自己也是黑帽子。
如果有3顶黑帽子,那么第三次关灯就会打自己,道理同上。
如果有n顶黑帽子,那么第n次关灯会打自己,数学归纳法。

在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的
不用算 ,一个小时一次,十二个小时十二次不同位置,二十四个小时二十四次,相同位置各重复一次。
这个答案对吗?要求的是三针重合而不是分针和时针两个重合啊。

共有三类药,分别重1g,2g,3g,放到若干个瓶子中,现在能确定每个瓶子中只有其中一种药,且每瓶中的药片足够多,能只称一次就知道各个瓶子中都是盛的哪类药吗 如果有4类药呢 5类呢 N类呢(N可数) 如果是共有m个瓶子盛着n类药呢(m,n为正整数,药的质量各不相同但各种药的质量已知) 你能只称一次就知道每瓶的药是什么吗 (注:当然是有代价的,称过的药我们就不用了)
第一个瓶子拿出一片,第二个瓶子拿出四片,第三个拿出十六片,……第m个拿出n+1的m-1次方片.把所有这些药片放在一起称重量.



March 27th, 2011智力题

假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。
3 = 6 - ( 5 - ( 6 - ( 5 - ( 6 - 5 ) ) ) );

有7克、2克砝码各一个,天平一只,如何只用这些物品三次将140克的盐分成50、90克各一份?
140-->70/70
70--->35/35
然后利用 2 克砝码和 7 克砝码将 35 克拆分为 20 克和 15 克。然后
70+20=90
35+15=50

有三个桶,两个大的可装8斤的水,一个小的可装3斤的水,现在有16斤水装满了两大桶就是8斤的桶,小桶空着,如何把这16斤水分给4个人,每人4斤。没有其他任何工具,4人自备容器,分出去的水不可再要回来。
表示为880,接下来,将一个大桶的水倒入小桶中,倒满,表示为853,(第2个大桶减3,小桶加3)则过程如下:
880——853:将3斤给第1个人,变为850(现在4人分别有水3-0-0-0)
850——823:将2斤给第2个人,变为803(这时4人分别有水3-2-0-0)
803——830——533——560——263——281:将1斤给第1个人,变为280(此时4人分别有水4-2-0-0)
280——253——703——730——433——460——163:将1斤给第3个人,变为063(此时4人分别有水4-2-1-0)
063——081:将1斤给第4个人,变为080(这下4人分别有水4-2-1-1)
080——053——350——323:将2斤给第2个人,将2个3斤分别给第3、4个人,(这时4人分别有水4-4-4-4)。。。

一间囚房里关押着两个犯人。每天监狱都会为这间囚房提供一罐汤,让这两个犯人自己来分。起初,这两个 人经常会发生争执,因为他们总是有人认为对方的汤比自己的多。后来他们找到了一个两全其美的办法:一个人分汤,让另一个人先选。于是争端就这么解决了。可 是,现在这间囚房里又加进来一个新犯人,现在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平。该怎么办呢?
一人分后,有另两人选出两碗(即选出他们认为最少的一碗给分汤的人),那两碗再有其中一人分,另一人选。

一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?
选取 k ,舍弃前 k 个钻石,从第 k + 1 颗起,遇到历史最大的就取之,否则,取最后一颗钻石。

有23枚硬币在桌上,10枚正面朝上。假设别人蒙住你的眼睛,而你的手又摸不出硬币的
反正面。让你用最好的方法把这些硬币分成两堆,每堆正面朝上的硬币个数相同。

将其分为一堆10个、另一堆13个,然后将10个那一堆所有的硬币翻转就可以了。
注意人家没说每堆向上的硬币个数都是 5 个。



March 26th, 2011模拟系列

http://hi.baidu.com/uuriel/blog/item/a2fc4076ac227012b051b9ca.html

后来的童鞋参考,



March 26th, 2011POJ 数学分类

后来的童鞋们参考。

http://www.cppblog.com/logics-space/archive/2009/03/02/75343.aspx

http://blog.csdn.net/J_Factory/archive/2008/09/14/2845330.aspx

http://hi.baidu.com/_longing_/blog/item/5254a017b110db56f2de3226.html



March 26th, 2011Berkeley DB 再看一遍

随手记录一下自从上次看以来发生的。有些是新添加的,有些是被我忘记了的。

1、recno 问题:
Btree, Queue 和 Recno 可以基于逻辑记录号来进行操作,逻辑记录号从 1 开始。在 DB->get() 和 DBC->get() 时指定 DB_SET_RECNO 即可进行基于记录号的存取。
Recno 下的记录号可以是易变的也可以是固定的。所谓易变是指当记录被插入或者删除时逻辑记录号会改变,而固定则是指不管数据库操作的变化,这个逻辑记录号总是不变的。在 Queue 中的逻辑记录号总是固定的。在 Btree 中的逻辑记录号总是易变的。
Read the rest of this entry »




© 2008 - 2012 道阻且长 | iKon Wordpress Theme | Powered by Wordpress 3.3.2