September 4, 2009

上周去了滴水湖绕圈儿,又踩车到了东海大桥。其他的感触没有多少,晒可是真的把我晒的差点崩溃。早上出发的时候太阳很小,自以为戴了个帽子就不会太晒了。结果一路艳阳华丽的将我狠狠的晒伤了,洗澡的时候水碰到皮肤都会疼。

由于读卡器坏了,照片也拷贝不出来,弄个菜车的示意图吧,其实晒的熊猫爪子一般的手臂才是亮点,下次再放出来:

OLYMPUS DIGITAL CAMERA

工作日在公司还是很爽的,之前在training,每天要接触大量的新的东西。实在是很happy,结束的mock project还拿了shuffle的纪念品真愉悦啊。

OLYMPUS DIGITAL CAMERA 

工作日的时候,在公司就是做项目和学习。虽然搬离了陆家嘴的办公楼,我还是比较喜欢现在的office的,大并且清爽,更重要的,离我住的地方N近。

我现在就坐在该白衣花样跳舞男子的位置。。。

OPERA1512

pleasure room 最愉悦人心的时候就是1、3、5的中午会塞满好吃的。。

OPERA1519

恩,这个WII基本现在没人玩了,主要是游戏的光碟好玩的都玩过了。。

OPERA1527

此乒乓球台见证了我在Opera目前的第一个公司无敌哈哈。。

OLYMPUS DIGITAL CAMERA OLYMPUS DIGITAL CAMERA OLYMPUS DIGITAL CAMERA

晚上在公司和同事聊天扯淡顺带看看别的项目组的进度,目前在和同事湘琳做Association Rule的研究和应用,还有个San Diego的同事—Soren,真是个奇怪的名字呢。Soren是个UCSD的PhD,加入Opera时间也不是很久,不过他非常认真的学习 Xinyu 和 Xianglin的发音很是有趣。今天遇到刚从SD回来的Bruce的时候,fengqin就说老是听到Soren在练习我的名字。。貌似这个X的却是很有难度来发的很标准。

回到住所,必然又是开电脑看东西,不过自然是比以前在南大时候爽多了,学生时代真是个很小强的时代,show下桌子先:

OLYMPUS DIGITAL CAMERA 

有条不紊的看看书,看看paper,淡定的我都感觉回到实验室的错觉。。。Anyway,经济情况不好,就认真学习和积累吧。

最近最操心的就是姨妈得了肺癌,而且还比较严重的样子,扩散的很快。我的小表弟瞬间长大很多,以前还都是只会倚小卖小的日子我还记得很清楚呢。比较之健康,其他的一切外在的金钱也好,荣耀也好,都是不值得一提的。哪怕是很重要的感情,也是建立在健康的基础之上的,所以一定一定要注意健康!

今天刚刚知道,05CS的一个在M$的同学得了尿毒症,某种程度上的肾衰竭,现在不去血透就会酸中毒,只能Bless下了。。

哎呀,走题了。。本来想写自己的生活的。。总的概括说来,生活才刚上路呢:正直向上,热于求知。

Tags: ,,.

在之前的一个文里有谈及到过最长公共字序列的问题,这个可以用来衡量俩个序列的相似度。

今年的Goolge Code jam的qualification Round 也有一道类似的问题:

【Sub-Sequence-Match】x=[]是一序列,y=[]是另一序列:问x中共有多少个不同的子序列等于y

和这个问题有一点类似的问题是IJCAI07的一篇文里提到的:

【All-Common-Subquence】x=[]是一序列,y=[]是另一序列:问x,y共有多少个不同的公共子序列

想法还是DP:

For S-S-M:

def f(x,y):
    if len(x)<len(y):
        return 0
    if len(y)==1:
        count=0
        for k in x:
            if k==y:
                count=count+1
        return count
    a=len(x)
    b=len(y)
    if x[a-1]==y[b-1]:
        return f(x[0:a-1],y[0:b-1])+f(x[0:a-1],y[0:b])
    if x[a-1]!=y[b-1]:
        return f(x[0:a-1],y[0:b])

意思就是:
如果x长度比y小,那么返回0;如果长度y=1了,那么就看x串中有几个y,返回这个个数;
不然的话
如果最后一个元素相等,那么让x’为x去掉最后一个元素的序列,y’为y去掉最后一个元素序列:
返回s-s-m(x’,y’)+s-s-m(x’,y)

如果最后一个元素不等,那么直接返回s-s-m(x’,y)

当然可以把上面的递归改写成递推的,这样效率会大大提高,并且不改的话,Code jam的大数据肯定是要会TLE的,改写起来很简单就不写鸟。

再来看看A-C-S的DP,大家基本可以自己想想就可以解决了,和上面的思路很类似

N(i, j) = N(i − 1, j − 1) × 2, if Ai = Bj
N(i, j) = N(i − 1, j) + N(i, j − 1) − N(i − 1, j − 1),
if Ai!= Bj

如果最后的元素相同,实际就是前面的A-C-S(i-1,j-1)×2.(有或没有最后一个item作为CS的一部分)
不然的话等于下面那个,注意要扣除掉重复计算的A-C-S(i-1,j-1)

E-O-F

Tags: ,,.