Siyang 的个人资料Siyang的小尾羊圈照片日志列表更多 工具 帮助

日志


11月19日

处女面感想

处女面结束了,总结如下:

没有展现出自己的problem solving,coding skills

也许题目太简单是一个原因,更重要的是确实有心理因素的影响,放在平时,我肯定会把方方面面都想到,再下笔写code。今天面试的时候急了,第一个behavior问题只回答了准备的一半,想省些时间来多做一些题;看见了简单题目就想立马写完做下一道,结果有些case没有handle到,尽管我做的快,可是也就只有那么一道题,剩下的时间都在聊天。。。。。。

一定要吸取教训!再简单的题目,做前一定要多问interview把spec搞清楚,先预见有哪些cases要handle,包括预见要handle的错误,然后再开写!还有就是,最后还是时间的时候,完全可以再要一道题来做,光是聊天没意思啊。。。

其实我事先准备的时候这些都知道,怎么真实的面试的时候就忘了呢。。。还是心理因素。。。按照我事先的准备正常发挥的话,应该说是可以做到perfect的。。。而现在,只有希望运气好了。。。

sigh,要认真吸取这个教训,下星期一的面试肯定也不会有很多题目,每个题目时间绝对够,在电脑上写code也很适合我,一定要做到perfect!

唉,还是很郁闷。。。

11月13日

梦里被人追杀

仿佛和两三个朋友一伙,莫名其妙的遭到一个黑社会的追杀,记得有一片森林,冲出森林便是片海滩,激浪中登上只小船,但又担心黑社会的人乘快艇追上来,有人说黑社会的人追不上来,继续往前划船,又有人说肯定会被追上,必须马上回岸跑进丛林躲避。船就在两股意见中不停的原地旋转,即没法前进,又没法后退,心里急得要死。这情形像是不里丹的毛驴,在两堆稻草中犹豫不知道吃哪堆最后饿死掉。

忘了说,场景是在漆黑的夜里,真的是漆黑,除了感受到海里的浪,什么都看不见。最终还是划回了岸上,沿着沙滩飞奔。突然察觉到,后面不远的地方,黑社会的人已经冲出丛林了并且也发现了我们的踪迹!没法,唯一的办法就是钻进漆黑的丛林,歇斯底里的跑,期望着黑夜能给我们打点遮掩。可是跑进丛林才发现,那真是纯黑一片的深手不见五指的黑,连自己的同伴,前面的路都看不见,后面又有追兵,那种漆黑中的慌乱和无助惊恐,实在是没法感同身受的描述出来。

无奈只能继续在那片森林里飞奔,不顾一切的飞奔,要知道,不跑的话就是等死,跑的不够快的话,脚步声就成了敌人追踪的最好引路标。就这样在恐惧的驱使下不知道跑了多久,恐惧完全把疲劳压下去了,幸运的是还没跟自己的队友跑散,不幸的是,始终隐隐约约的感觉到,黑社会的人还在身后跟着。

最终跑出来森林,跑进一个大体育馆,又像是个大健身房,还像一个大仓库,简而言之就是电影里单挑枪战的最佳场所。我们在不同的遮蔽物之间穿梭来穿梭去,竭尽全力的在隐蔽自己的同时想摆脱追捕。在快要跑出房间的最后几个遮挡物的位置,我跟同伴跑散了,而且,黑社会的头子追上来了!也许是在恐惧中憋了太久,我猛地爆发了,狗的黑社会,老子怕你索!举起身边的椅子朝黑社会大佬砸过去!暴怒之下必有勇夫啊,黑老大很轻易的就给打晕了,而我才又陷入了心理的纠结中,我要是留下黑老大活口,就算这会儿跑了出去,以后那是肯定终生被黑社会追杀,终生活在恐惧和担心之中!而我又没法下狠手去残忍的结束一个生命,如果了结了黑老大,我自己内心也是一辈子的痛苦。。。

我都记不得最后是怎么处理的了,总之跑出来了房间,遇上的同伴,幸好梦里的场景开始转换到另外的情节了,最后醒来,清晰记得的只剩被追杀的恐惧。

11月11日

2012 Doomsday

根据玛雅人的预言上表示,现在我们所生存的地球,已经是在第5太阳纪,并将终结
于西元2012年12月22日,到目前为止,地球已经过了四个太阳纪,而在每一纪结束时,
都会伴随一出惊天动地的毁灭。

* 第一个太阳纪——马特拉克堤利MATLACTIL ART(根达亚文明),最后为一场洪
水所灭,有一说法是诺亚洪水。
* 第二个太阳纪——伊厄科特尔Ehecatl(米索不达亚文明),被风蛇吹的四散零
落而毁灭。
* 第三个太阳纪——奎雅维洛Tleyquiyahuillo(穆里亚文明),则是因为天降火
雨而步向毁灭之路,乃为古代核子战争。
* 第四个太阳纪——宗德里里克 Tzontlilic(亚特兰蒂斯文明),也是在火雨的
肆虐下引发大地的第四次灭亡。

玛雅人的预言的最后一章,大多是年代的纪录,而且这些年代的纪录如同串通好
的,全部都在“第五太阳纪”时宣告终结,因此,玛雅人预言地球将在第五太阳纪迎向
完全灭亡的结局。当第五太阳纪结束时,必定会发生太阳消失,地球开始摇晃的大剧变
,根据预言所说,太阳纪只有五个循环,一但太阳经历过5次死亡,地球就要毁灭,而
第五太阳纪始于纪元3113年,历经玛雅大周期5125年后,迎向最终。而已现今西历对照
这个终结日子,就在西元2012年12月22日前后。

 

前面都是引子。我这里要提出的,是一种科幻的思路:

先从各类宗教民族传说的神灵奇迹说起——为什么世界的各个民族各个地区都有如此类似的传说神话神迹?难道纯粹是凭着人对超自然能力的幻想?各种的史记证据遗迹,汇总起来,都指向一个极大的可能性,人类文明确实经历过若干的超自然力量事件。

假设某一些神迹传说真实的话,按照剃刀原理,更简单的推断就是,不仅仅是某一些,而是大量的神迹传说确实是真实的。于是,暂且不管根源,就问一个问题,为什么总是地球?如果还没有回答这个问题的思路的话,回想一下地球文明的发展,在已知的40亿年的历史中,就只有很短的一点点,才是我们已知的人类文明。40亿,几千年,仔细想想,人类文明完全就是一下子蹦出来的!你也许继而会想到,好像也有传说,atlantis文明,好像的确也有过很多的局部的人类文明突然一下子消失了。另外一个事实是,考古资料里,关于人和古人的断层,在几万到几百万年之间,似乎也太大了。你不由得只能推测,似乎人类的文明,就是一层层的片段!

想想,中国神话里,有女娲造人。基督教里怎么说人类的诞生呢,“上帝按照自己的模样造人”。一个星期内,世界万物就诞生了。人类文明是如何终结的呢,大审判,终结日。为什么上帝要创造人类文明而又要终结它,不合理啊。为什么上帝的样子也是人?如果上帝的样子也是人,难道上帝本身不也就是人吗?如果上帝本身就是人,而又被普通的人认为是上帝,只有两个可能:上帝是未来的人类,或者是平行世界某一族的人类。

首先考虑族论,假设人有多族,分布在不同的平行世界。当我们这个世界的人类文明毁灭后,另一个平行世界的人类文明遣使者来重新点燃着一个旁族的火种。而他们又知道,最终这一族也是会终结的。既然如此,为什么,他们要这么麻烦的穿越过来,重新创造另外一个人类文明?还不明显吗?因为他们也知道,他们所在的世界,文明最终也会终结,为了延续文明的火种,他们能做的,就是穿越到另外的时空(平行世界)去创造新文明的火种。这样一来,上帝在创造我们这个世界的时候,也其他的无数时空中,创造了无数的人类文明的火种,指望着,其中的某一族文明能在终结之前进化到极高的地步,去新的时空撒播新的火种。

既然认为了,上帝就是来自更高的人类文明,该文明至少需要满足一个条件:在时空科学技术上,已经能够随意的掌控时间和N维的空间。也许你会想到,其实你说他们是来自未来也好,来自和我们平行的世界也好,其实都没有区别。也许对他们来说,时间尺度上的前后穿越,本身就只是在平行世界的时空体系中跳跃的一个特例而已。而我们历史上所记录的之如玛雅文明,atlantis文明,极可能是当我们这个空间中,先进文明在我们之前播的几次种。

现在有一个逻辑上的疑惑了,既然更高级的人类文明练时空科学都已经如此炉火纯青, 为什么无法避免自身被终结的命运?非得要跑到别的时空去留下火种?先来想想这个终结是怎么个终结法?地球被摧毁?对于一个掌握了时空技术的文明来说,地球被毁灭,实在是比1+1更简单不过的问题。完全可以很坚定的推断,这个大终结的方式,必然是时空性的!诸如时空坍塌。你可能要问了,他们那么厉害,大不了集体移民到另外一个时空(平行世界),他们既然能去播种,还不能集体移民吗?也许,关键就在于,一个我们这个文明永远无法弄明白的奥秘,生命。在他们的文明中,必然意识到了,生命是于时空所联系的,不光是生命,你要知道,如果从纠缠的角度描述生命,所有的有意识生命都是纠缠在一起的,所以,更可能的,整个的文明的生命都是一个和时空命运关联的 -- 即便他们移民来我们的空间生儿育女,而他们的子女却也是和他们整个文明整个时空所关联的 -- 当他们的时空走向终点,整个文明彻底终结。

那么,为什么基督教的记录中,并没有像玛雅的预言一样,明确告知了我们终结的时间。上帝是一个人,还是一些人?从各个地区的不同宗教民族种族等情况看,各种不同的神的传说,极可能的,造物主不止一个。为什么一个高级文明来的造物主还不够?为什么上帝告诉了基督徒世界终有大审判而不告诉具体时间,但是玛雅人却能预言到2012年12月22日?这说明的,曾经有多个高级文明来到我们这个时空,一些文明的造物主,试图别的造物主的做品,进行一定程度的修改或者添加!留下圣经的上帝所来自的文明,也许尚未能进化到能够准确计算时空命运的方程的地步!另外一个更高的文明路过我们的时空,他们也许足够的进化能够判断出毁灭的时间,告知他们觉得当时处于文明顶峰的擅长天文数学的玛雅人,对玛雅人寄以希望,希望他们最终会发展到足够高的地方,在2012年之前能够掌握时空穿越。

最后一个大疑惑就是,WHY?为什么人类文明的延续要通过时空穿越的形式,为什么每一次都只能从头开始,为什么非得这么错综复杂?为什么再高度发展的文明,也无法逃过时空终结?为什么人类文明就不能连续,必须要终结/重生/终结/重生的无限轮回?

最后的答案就只有一个了,一个有序的宇宙,因为人类文明在掌握时空穿越后,造成的时空悖论,最终在整个宇宙尺度上造成了灾难(这个尺度包含了所有可能存在的平行世界),最终宇宙演化为混沌的状态。。。

11月7日

学习了backtrack(回溯法)

之前做了一些回溯的题,比如打印permutation,打印任意n对括号等等,都是瞎蒙的。

还真凑巧,上午做了打印n括号的题,下午就看见有人说到回溯法,想想自己还没系统学过这个,找了本基础的中文算法书来看了看,虽然书上讲的很浅显,发现自己貌似瞎蒙还蒙对了思路,呵呵。正好凑巧的是,刚刚看了一点点,网上就有个人问怎么做Vertex Cover的问题,正好让我来做做练习。

1. 打印任意合法的n对括号:

void printParenthes(int N, int left, int right, stack<char> &stk){
    if(left == N && right == N){
        printStack(stk);
        return;
    }
    if(left>right){
        stk.push(')');
        printParenthes(N, left,right+1, stk);
        stk.pop();
    }
    if(left < N){
        stk.push('(');
        printParenthes(N, left+1, right, stk);
        stk.pop();
    }   
}

 

2. Vertex Cover(NPC问题),图G中找一个顶点的最小子集,覆盖图的所有边。

int current_k = N; //global

void VC(int k, int start_v){
    if(all_edge_covered(G) && k<current_k){
        current_k = k;
        return;
    }
    if(k == current_k - 1) return; //剪枝
    for(; start_v<=N; start_v++){
        if(!edge_list[start_v].empty()){ //剪枝
            list<int> temp_edge_list = edge_list[start_v];
            clear_edge(start_v,G);
            VC(k+1, start_v+1);
            if(curent_k == k+1) return; //剪枝
            reset_edge(start_v,temp_edge_list,G);
        }//endif
    }//endfor
}//endVC

 

想了想,其中的for循环其实是不必的,对于解空间树是子集树的问题,只需要考虑《当前顶点“选”“不选”》两个情况

改进后的算法是:

void VC2(int k, int start_v){
    if(k<current_k && all_edge_covered(G)){
        current_k = k;
        return;
    }

    if(k >= current_k - 1) return; //剪枝
    if(start_v == N) return;    //没有下一个顶点了

    if(!edge_list[start_v].empty()){ //如果
        list<int> temp_edge_list = edge_list[start_v];
        clear_edge(start_v,G);
        VC2(k+1, start_v+1);
        if(curent_k == k+1) return; //剪枝
        reset_edge(start_v,temp_edge_list,G);
    }//endif
    VC2(k, start_v+1);    //不选start_v这个顶点
}//endVC

11月6日

一日3题

第一题。给一个数组a[1]到a[n] : 例如 1,2,3,4,5,6

现在随机生成a的一个permutation: b[1]到b[n] (例如:3 1 5 2 4 6)

问, a和b数组在每一位上都不相同的概率是多少?假设a本身没有重复的数

 

我的解法:

主问题:F(n) = 给定长度为n的a数组,b数组有多少种取法

辅助问题:结果用f(n)表示。 b数组是{1….i-1,x,i+1…n}的一个排列,其中x!=i,满足a,b在每一位上都不相同,有多少种b?例如,a = 1,2,3,4; b是{1,2,5,4}的一个排列。换句话说,组成b的元素中,有且只有一个数不在a中。

这样定义了F(n),f(n)后,很显然有递推关系:

F(n) = (n-1) * f(n-1)    //解释:第一位有n-1种选择,任意一种选择后,问题变为一个 n-1规模的辅助问题

f(n) = F(n-1) + (n-1)*f(n-1)   //情况一,在b数组的第i位置填入x,考虑剩下的n-1个位置,即是一个n-1规模的主问题;情况二,i位置填入非x的数,考虑剩下的n-1个位置,即是一个n-1规模的辅助问题。

简化一下表达式就是:

F(n) = (n-1)(F(n-1)+F(n-2))

 

 

第二题,一个binary tree,逆序打印BFS序列。不能同时用两段存储空间(不同时用queue和stack)

解法,用一个vector(array)模拟queue+stack。queue的push操作即vector的push_back,等效于q.pop()+stack.push()的操作则是,vector的index往前走一步!最后把vector从尾到头打印一遍即可。

 

 

第三题,网上看的答案,超级巧妙,生成一个0-255 二进制数有多少位是1的查询表

static int BitSetCount256[256] =

{

#define B2(n) n, n+1, n+1, n+2,

#define B4(n) B2(n), B2(n+1), B2(n+1), B2(n+2),

#define B6(n) B4(n), B4(n+1), B4(n+1), B4(n+2),

B6(0), B6(1), B6(1), B6(2)

}

不得不说,这个宏递归的方法用的太妙了!!!

附带赞一个巧妙度略低一些的计算二进制数有多少位1的方法

int bitSetCount(unsigned int i){
int c=0;

while(i){

c++;

i &= (i-1);  //这一步很赞,每次保证清除最低一位1;

}

return c;

}

11月5日

人心不古 世风日下(转新闻二则)

1. http://nf.nfdaily.cn/ttlist/content/2009-11/03/content_6179094.htm

卖水果老人因收4张假钞猝死街头 水果遭哄抢

几张假钞,一条人命,一场人间悲剧。因一星期内连续收到4张假钞,62岁的小贩气急攻心倒在了水果摊上。而令人不耻的是,就在小贩猝死倒地后,留下的700多公斤水果被一些路人在半个小时内连买带拿一扫而空。这是10月31日上午发生在娄底市金谷市场的一幕。

现场:老汉猝死,水果贱卖

  10月31日上午,娄底市金谷市场传来阵阵恸哭声,死者李谋辉的家人悲痛欲绝。记者在现场看到,只见老人已经躺在木架上,身体全部用衣服覆盖,在其身边烧了一堆冥钱。

  李谋辉的家人急于准备安葬老人的后事,把没有卖掉的2辆三轮车上的柑橘、苹果等水果作2毛钱一斤低价处理,吸引许多群众马上来抢购。围观的群众看到这么便宜的水果,加上主人不在,也开始哄抢死者水果车上的柑橘。有的好心人给了一二元钱,更多的人则是看到没有人问要钱,拿起水果就走人。半个小时,连买带拿大约700多公斤的水果就被一扫而空。

起因:一周收4张假钞还被人砸

  “父亲是收到假钞活活气死的!”据李谋辉的儿子李建军介绍,父亲是涟源荷塘人,今年62岁,有一儿一女,在金谷市场做水果生意已有几年,父亲为人比较随和,人际关系比较好。老人在世时身体本身不是很好,有高血压,平时脾气比较大,个性比较强。

  前几天,有人拿20元假钞在李谋辉那里买水果,被他发现,接着就发生了口角争执。当时,买水果的人将李谋辉的后脑勺砸出血,李谋辉在附近医院看了病后,买水果的人赔偿了3000元医药费就离开了。

  10月29日上午,又有一个年轻人拿了一张20元钱的假钞跟李谋辉买了2个苹果。李建军介绍说:“当时父亲没有发现是假钞,过后给我检验后才知道是假钞。父亲马上把买苹果的年轻人追到,年轻人被追到了,将我父亲推倒就跑。在附近好心群众的帮助下我们才把那个年轻人抓获,并送到金谷市场警务室。”

  10月31日上午,李谋辉又在水果摊上收到一张20元的假钞。“父亲因为年老了眼睛不好,在一个星期内一连收了4张假钞,其中1张100元的,3张20元的,20元是FA6开头的。我们卖一箱香蕉才赚5元钱,收了几张假钞,这几天就等于白干,因此我父亲对此事耿耿于怀,可能是气急攻心,父亲当场晕倒在地就再也没有醒来。”李建军说:“我想就是假钞害死我父亲的!”

 

2.  http://news.163.com/09/1103/13/5N6RF6TR0001124J.html

大学生救人溺亡 捞尸者手牵绑尸绳谈价(图)

大学生救人溺亡事件 捞尸人:我们走错这步棋

核心提示:湖北三位大学生救人溺亡,目击者现场拍下照片:被打捞上来的一具大学生的遗体被绳子绑着,大半个身子浸在水里;一名穿白衬衫的老年男子,一边拉着绑尸体的绳子,一边摆手和岸上的师生谈价要钱。打捞3具遗体,捞尸者前后一共收取了3.6万元。

浙江在线11月3日报道 10月30日上午,湖北荆州宝塔湾烟雾朦胧,远处的货轮像往常一样在长江上平稳行驶。岸边的沙滩上,自发来这里祭奠英雄的人们络绎不绝……

6天前,当地两所高校的3名大学生何东旭、方招、陈及时为救两名落水少年,在这里献出了宝贵的生命。

令人心寒的是,在英雄遗体打捞时,面对同学们的“跪求”,个体打捞者不仅不为所动,而且挟尸要价,一共收取了36000元的捞尸费!

19岁救人大学生3个月前做开胸术

篮球队长主动和女班长换位,把自己换在“人链”最前端

宝塔湾位于荆州市郊,因附近一座明代万寿宝塔而得名。这里有一处沙滩,面积大约半个足球场那么大,坡地,是当地人游玩散步的去处,也是游泳爱好者们经常下水的地方。

堤岸上,矗立着一块巨型安全警示牌——“特别提醒,宝塔湾河段水情异常复杂,不知吞噬了多少人的宝贵生命,游泳危险”。

“这里经常有人溺水身亡,今年夏天的时候,我就亲眼见过捞出一具尸体。”住在附近的赵超广老人说。

赵超广退休前是荆州第三棉纺厂职工,也是一位游泳爱好者。他指着江水说,宝塔湾看着平静,实际上水下暗流涌动,河底都是锅底状的陡坡,人在水中游走一旦踩空十分危险。

事情就出在这个水下的“陡坡”。

“救人时,大家手挽手结成‘人链’,前面的同学一脚踩进深处,有两个同学的手松开了,‘人链’断开处的前9人一下子落水……”讲起10月24日发生的那一幕,目击者长江大学文理学院(独立学院,与长江大学不属于同所高校)新生高阳陷入痛苦的回忆。

那是一个普通的周末,天气很好。高阳所在的广播电视新闻专业两个班的新生,相约来到宝塔湾郊游。大家来自全国各地,到校只有50天时间,很多同学还没有近距离看过长江。

深秋之季,长江水清江平,宝塔湾看上去十分静谧。下午2时,一顿饕餮过后,大家坐在松软的沙滩上,三五扎堆,漫不经心地开始聊天。

“救命!救命!”不远处传来的呼救声惊动了大家——两个小男孩落水了!当天是周六,在宝塔湾观光游玩的少说也有100多人,大家纷纷顺着呼救声围拢过去。

正当女班长姜梦淋转身张望时,身旁的李佳隆边跑边脱掉外套,冲向江中。“落水小孩离江岸就几米,感觉能救上来。李佳隆会游泳,第一个跳下水,把少年抓住,大家在岸上开始欢呼了。可是,很快我们发现他游着游着,忽然在原地不动了,其他同学赶紧跳下去帮助……”高阳说。

原来,因为没有水上救援经验,李佳隆被遇救少年紧紧抱住,活动受限,加之牛仔裤浸水后下沉,眼看就支撑不住了。这时,他一边拨水,一边向同学们大喊“不行了”……

见此情景,岸上的徐彬程、方招赶忙跳下水。徐彬程迅速游过去,从李佳隆手中接过落水少年,大家协力将他推上岸。事后,经核实,这名被救少年名叫陈天亮。

很快,救人溺水的李佳隆也被方招安全救出。李佳隆上岸后不停地呕吐,但思维还清醒,被岸上的高阳等同学送往医院。

与此同时,长江大学土木工程专业新生陈及时跳下水中,去救另一名溺水少年,不幸被卷入江水中。见情势危急,方招和徐彬程再次返回江水中救人,但此时江面上除了那名少年还在挣扎外,已经看不到陈及时的身影了。

岸上的同学们想出手拉手结成“人链”方法一起救人。

19岁的何东旭是班里的篮球队队长,平时就乐于助人,这次他主动和女班长姜梦淋换位,把自己换在“人链”最前端——同学透露,3个月前,何东旭才做过一次开胸手术。

一个更大的隐患埋下了——“人链”断裂时,前面的9人溺水,开始乱扑腾。

现场失控,同学们有的哭喊,有的呼救,有的报警求助。100米外的宝塔湾大堤上,3名冬泳爱好者闻声急忙赶来相救。他们是宝塔湾冬泳队队员韩德元、鲁德忠和杨天林。

捞尸者手牵绑尸绳谈价要钱好冷酷

“他们把捞尸体当作职业,只图赚钱,没有人性”

当冬泳爱好者、其他大学生、渔夫救出9名大学生和另外一名落水少年后,江面上就再看不到人影了——陈及时、何东旭、方招已经沉入江中。现场参与救援的两条渔船离开了宝塔湾,下水救人的冬泳队员韩德元、鲁德忠、杨天林也相继上岸。

按两艘渔船渔夫事后给警方的交代,此时因为江面上看不到目标,无法继续施救,所以他们离开了宝塔湾。

“江中救人和游泳池救人是完全不同的,一旦溺水者沉入流动的水中,根本找不到目标,很难施救。”对于渔夫的说法,多次参与水上救援的宝塔湾冬泳队队长王珏认为也不是没有一点道理。

渔船离开几十分钟后,两只打捞船向宝塔湾开来。此时,长江大学校领导也闻讯赶到事发现场。“‘活人不救,只捞尸体,打捞一个1.2万元,先交钱,后打捞。’对方开口就是这话……”在场的高阳说。打捞船开到后,没有一点救人的意思,所有的对话都围绕着一个钱字。“救援的理想时间是溺水后的5-7分钟,等打捞船赶到的时候,早已没有‘救人’的希望了。‘见死不救’之所以被误传,是因为同学们把在事发现场的渔船和后来赶到的打捞船混淆了。”王珏认为,救援和打捞的基本事实是:前期,渔夫参与了救人;后期,捞尸者拿不到钱不打捞。

当时校领导身上带的现金不够,答应对方先捞人,剩余的钱随后补上,但打捞船船主不干。其间有女同学“跪求”打捞船船主尽快救人,但对方就是坐在船上不动。无奈,师生们掏出身上所有的钱,凑了4000元交给对方,捞尸者才开始打捞,同时扬言:“钱不到位的话,只打捞一个”。

现场多名同学证实,打捞船船主挟尸要价。有的目击者还现场拍下照片为证:画面上,被打捞上来的一具大学生的遗体被绳子绑着,大半个身子浸在水里;一名穿白衬衫的老年男子,一边拉着绑尸体的绳子,一边摆手和岸上的师生谈价要钱,表情木然。捞尸者就干脆坐在船上等着学校领导派人回校取钱。打捞3具遗体,捞尸者前后一共收取了3.6万元。“他们把捞尸体当作职业,只图赚钱,没有人性!”赵超广说。“第一次真实接触社会,很受刺激。我们很单纯,他们只认钱,两个极端。”高阳说。

据长江航运公安局荆州分局调查,事发现场的两条渔船和后来赶到的两条打捞船,均来自长江对岸的公安县埠河镇,打捞船则专门以打捞尸体为职业。当地群众反映,这些捞尸者曾向他们发放印有“24小时服务,专业人员打捞”的名片,并称如果给他们提供打捞线索,给200元情报费。

挟尸要价事件曝光后,当地警方称有可能以涉嫌敲诈勒索追究其法律责任。知情者还爆料称,之所以敢开出天价捞尸费,是因为一个姓陈的打捞船船主垄断了这一带的打捞业务,其他人如果私自打捞就会受到恐吓甚至被砸船,有“黑社会”嫌疑。

在支持警方打击挟尸要价的同时,人们也不得不承认,捞尸者趁人之危向家属索要高价牟取暴利的事,在绝大多数江河沿岸都曾发生过。

2004年7月7日,武汉新河街幸福里社区一名11岁的小孩溺水,痛失爱子的家长赶至现场后一筹莫展,这时附近江面上的4条私人渔船闻讯赶至,并向家属开出了“捞上来3000元,捞不上来1500元,先交押金1000元”的价格。

2007年7月9日下午,兰州两名外地民工在黄河一沙坑游泳时溺水,接到求助的民警叫来羊皮筏子下水营救,但筏子主人因为费用问题几次放弃打捞救援。4名好心市民冒着生命危险下水义务营救,却遭到围观人群的起哄嘲笑。两个多小时后,溺水民工被捞起,但已气绝身亡。筏子主人得到了3000 元的打捞费。

回到这次宝塔湾事件。危险发生后,同学们第一时间报警求助,当地海事部门、水上派出所、公安消防人员赶到后,均以不具备条件、没有专业设备为由,未能提供有效救援和帮助。应该说,这正是打捞船挟尸要价的土壤。

紧急救援,这个本属于公益领域的服务被赤裸裸商业化和营利化,直接或间接地侵蚀着公民的生命健康权,让生命价值和人的尊严被利欲熏心所践踏。大学生舍己救人牺牲却遭遇捞尸者勒索,再次暴露了政府紧急救援(特别是水上救援)的缺失带来的严重后果。

陈波收钱捞尸的时候,并不知道三个大学生是因救人溺水的英雄。“如果当时知道他是英雄,我们把收的钱当场捐出来,不是名利双收吗?你说是不是?”夏兵说,“我们走错这步棋。等我们把钱收完了,别人再说他是英雄,我们也来不及了。舆论啊。”
这张相片在网络上引起极大争议

2uz2ry8

11月2日

总结下最近几天看到的一些很有趣的题目

题目1. 一个任意的数组,找出一个严格单调递增的最长子序列。

例如: {3,0,1,7,2,4,5,9} –> output: {0, 1, 2, 4, 5, 9}

很简洁巧妙的算法,能在O(N log N)时间和O(N)空间做出来!

 

题目2. 玻璃杯/鸡蛋drop问题。有N层楼,假定是在 i 层楼扔鸡蛋,如果没有碎,那么在所有<=i 楼层扔鸡蛋都保证不会碎,反之如果碎了,那么保证在所有 >=i 楼层扔鸡蛋都必碎。通过若干次尝试扔鸡蛋,找到某个鸡蛋碎/不碎的”临界”层。允许你扔鸡蛋的总次数是D,允许你打碎的鸡蛋数是B。

问题的描述是:对一组给定的数(N D B),如果存在一个策略保证能在D B的限制下,在N层楼中找到“临界”层,那么称此(N D B)是Solvable的。接下来相关联的三个问题就是:

(a)给定D,B,求满足(N,D,B)Solvable的最大的N_max. 例:D=4,B=1, 策略是从第一层开始一层层往上. N_max=D=4.

(b)给定F,B,求最小的D_min

(c)给定F,D,求最小的B_min

这个问题相当容易找到看似最优的解,但是绝大部分的方法都不是最优的(最快最高效)。而且最迷惑人的是,(a)(b)(c)三个问题中,必须先从其中某一个下手开始解决,如果你不幸的先从另外的两个问题下手,多半离最优解遥遥无望。

如果你找到了正确的入手点,有了正确的思路,最后的答案会异常的简单!

 

题目3. 经典的概率悖论。3扇门,一扇背后有羊,你选中一扇门后,现在另外一扇门开了,里面是空的。问你是否应该重新选择。

分析:据观察,有一部分的人坚持认为一定要重新选择,另一部分的人认为是否重新选择都一样。另外少部分的人能看出,这个问题很巧妙的隐含了意识(主观intention),信息和概率的关系!

 

题目4. 很简单的,N个数的数组,找出最大的和第二大的数,只用N+logN-2的比较次数,不需要额外空间。这个是典型的问题本身就是答案提示的题目--基于比较又有LogN,很显然思路涉及二分法,继续下去,剩下的问题就仅仅是找一个符合要求的Implementation了。

 

题目5. 找N!最后一个非零的数字。巧妙的方法可以在 LogN 时间内找出来,一个hint是利用 5^k(和log_5)划分问题

 

题目6. 任务分配,假设有N个任务,每个任务需要W_i工作量,M个人,每人每天能做工作量w_i,如何安排工作,使得所有工作能最快完成。这个问题其实更像一个开放性问题,因为一个合理的贪心策略,最后的结果跟最优结是很接近的(大致上,最多只差一天)。

 

题目7. 计算Fibonacci 数 F(n),O(n)的算法是很trival的。但是有很漂亮简洁的Log(N)算法,思路是利用2*2矩阵表示Fibonacci递推式,然后用二分法的思想球矩阵的N次方。

 

题目8. 一颗BinaryTree,每个节点有个NULL指针,要求把每个节点和在BFS中它的下一个节点串起来。其他BinaryTree的常见题有比如非递归的实现遍历,用.parent or stack。思考这些题的经验是,对于这一类的树的题目,有很强的递归性/规律性,通常都是O(N)的复杂度,那么把N steps的问题,放在某个单step来研究,会把思路变得更清晰。另外一点就是,完全可以假设在做这一单步之前,在做这一步之前的问题已经最大可能的正确解决了,这样能够以一种数学归纳法的思想去利用之前的结论。比如这个题里面,假设节点 i 之前的节点都已经串好了,如何把 i 串到下一个节点。这个问题就是看一眼草图就能知道的了。最后一点经验是,在效率相当的算法的基础上,不同版本的实现,已经有能够互相启发的地方。

 

题目9. lookup table找0-255二进制数的set bit的数目。网上看到的源码,太赞了!

unsigned char BitSetCountTable256[256]
{
# define B2(n) n,     n+1,     n+1,     n+2
# define B4(n) B2(n), B2(n+1), B2(n+1), B2(n+2)
# define B6(n) B4(n), B4(n+1), B4(n+1), B4(n+2)
    B6(0), B6(1), B6(1), B6(2)
};