Tag Archives: 总结

一篇总结

总的来说,两年半的研究生生活不很如意,各个方面都不很如意,但又不是糟糕到一塌糊涂,所以感觉就是很憋。显然没有什么开心的事能痛快地笑,但也没有什么特别难过的事能痛快地哭,各种不爽都无处发泄。相比于本科几年的风风火火大起大落,日子过得平淡而没有回忆,仿佛一眨眼之间几年就过去了。话说最近看到同学的入党申请书,从学习方面、生活方面、思想方面等等分别描述,下面我也就仿照此模式来写。

科研方面,不靠谱地混了下来,好歹毕业证是拿到了,我也从一个对学术研究有一定憧憬的无知少年,逐渐认清了无奈的现实。现实是什么呢?鉴于此blog的读者还有不少在读或将读研究生的,为了给小朋友们保留一个美好的想象,我就不详述了。概括来讲,我感觉自己就是这个笑话里的猪。Anyway,总算是要解放了,我已经战战兢兢憋闷了太久,想到今后自由的生活,我就忍不住热血沸腾啊沸腾。我要给不明真相的群众演示一下什么叫创造力和行动力,什么叫下山的猛虎入海的蛟龙脱缰的野驴奔腾的草泥马,wohaha……抱歉老衲失态了,继续继续。

找工作方面,结果也不是让我非常满意。最后是定下了腾讯北京,也拿到了几个差不多水平的其他offer,其实我也不清楚哪个选择是最好的。因为之前也没有任何公司的实习经历,完全是凭自己的主观印象以及师兄和同学的一些评价做的决定,好在换工作比换导师还是要容易很多的。在此也感谢在我找工作过程中给予帮助的人们,名单比较长我就不一一列举了,江湖路远,来日方长。

之所以说不是非常满意,主要还是因为被Google拖了一个半月然后拒掉这件事。在此我还是想重复一下我的RP观:除非有充分的把握,否则应按RP最坏的情况做出计划。一件坏事如果有0.1%的概率会发生,那么你可以无视,但如果有10%的概率会发生,你最好认为它一定会发生。ACMer都知道最坏情况复杂度分析,一个好的算法不应该假设数据是仁慈的,我认为人生也一样。譬如拿到Google的offer,这就是一件我没有充分把握的事情,所以就不要对好结果有过分的期待。如果真的想拿,如前所述,那就只有把自己的水平提高到有90%以上的把握。

插一句嘴,上面模型的参数10%是以我自己前二十多年的样本数据为训练集调出来的一个经验值,大家知道我的RP向来是比较低的,所以对读者您来说这个值可以设得大一些。不过也建议您不要过于乐观,因为如果您能看懂这篇文章,99%的可能您是一个中国人,不要忘了自己投胎时选的可是Hard模式。

感情方面,我只能说,弱水三千,可我拿着一把漏勺。按照上述理论分析的话,我觉得对这种事我这辈子也做不到90%以上的把握了,只能寄希望于我那可怜的RP了,希望某一天哪个姑娘一时想不开吧。曾经有一段时间找一个mm的愿望很迫切,结果就是很杯具地验证了什么叫欲速则不达。现在已经比较淡定了,觉得自己除了丑了点矮了点穷了点智商和情商低了点,其实也不算一无是处,努力改善一下自己的形象,补补漏勺上的窟窿眼,总有一天会遇到一个想不开的姑娘的。至于在这之前么……我刚买了一个500G的硬盘,你懂的。

最后一句话,我觉得其实我还是挺nb的。

我和我的ACM-ICPC (3)

[3. 第一年比赛]

以下的几部分,将分别用第一二三四年比赛作标题。发现这一部分很难写,因为似乎没有什么特别值得记录的事情,就是每天看书切题做比赛看书切题做比赛,其实说起来,ACMer的绝大部分时间也就无非是这几项活动。我尽量多回忆一些细节出来,让这一部分内容充实一些。

首先提一下当年那些可爱的队友们,最先认识的应该是03计算机的秘中凯(Washington)和万涛(WTommy),最先的交流是在BBS上(八卦一个,当时wt的BBS签名档是“咱男人就活得潇洒自在”,后来有MM以后就换了……),后来在05年上半年的讲座上见到了真人。和小秘怎么认识的记不清了,大概是wsn的气质互相吸引?和wt的接触,我现在只记得一件事就是讲DFS的时候提到了ZOJ1002 Fire Net,这题我过了,但他怎么也写不对那个递归(别跟我说这题可以用匹配,那时候我们怎么可能知道那种东西),我们两个讨论半天终于让他转过弯来了,两人都很高兴的说。

现在回想起来,当时我貌似俨然是一群锉人里面最牛的了,至少从题数来看最多(当时大家还都是比较机械地从做题数上看问题),又是唯一传说中的“有OI基础”的。本来我是只打算混进队里打打杂什么的,对能不能上场参赛都没抱什么希望,结果发现随着老队员全部退役,天大以后争金夺银甚至World Final的任务竟然真的要依靠我们这一批新人了,而我恐怕要在队里起相当重要的作用,当时的感觉既惶恐又激动,大概从那时候起我就不自觉地把许多沉甸甸的责任背在身上了吧,而或许正是这份责任让我坚持了这么多年。如果当时哪怕只有两三个老队员留下来,我也许就简单地做个二线队员,也许能很高兴地拿一个铜奖,也许然后就在下一年去做其他喜欢的事了……还是那句话,很多事情就那样看似偶然地发生了,我们再也无法改变。总之就是,不知从哪一天开始我有了这个觉悟(请允许我狂妄地暴露内心的想法):这里没有牛人可以让我依靠,我能依靠的只有自己的努力,我要超过现在的所有新队员,我要超过历史上所有老队员,我要让天津大学ACM因我而辉煌。

05年的暑假集训是在网络中心旁边的软件学院(前)小机房——那个地方估计只有05级以上的同学们有印象了。集训一共有不到二十人参加,先是用POJ的练习赛做了几场个人赛,当然没有什么选拔的成分,只是让大家看看各自的水平以及外校的水平。实话讲当时我是有点受打击的,本来从ZOJ题数来看我已经超过大部分去年的老队员(当时只比Hill少了),在校内来看也已经有点“牛”的感觉了,结果拉出去和外校的真牛一比,根本不堪一击,基本排不进前50。(仔细看了一下,第一场的成绩是78名,第二场是50名,第三场是76,尽管这样在校内也基本是最靠前的,当时起步之艰辛可见一斑。)

然后就是根据各自意愿组队,按题数排序,题数多的优先选择。当时的题数是我最多,然后wt,我们两个又拉了一个在个人赛里表现很不错的张小骥(goodhorsezxj)组了一队,为了表示我们要比去年的一队Diablo强,于是就起了一个制作Diablo的公司名,就这样,TJU_Blizzard华丽登场了。其余队员的组队情况可以参考我发的那个“历史情况(续)”,另外尤其要说一下的是05年我们实际上有5支队伍,但因为网络预赛成绩不好,每个赛区都只有一个名额,最终TJU_CCTM队(队员:马宇翔、陈杨、曹佳、汤理钧)没有机会上场参赛,现在我仍然感觉对不起这个队伍,很长时间的努力最终没有机会得到证明,如果我们能够再努力一点也许就不是这个结果。

组队赛仍然受虐,确实实力差距巨大。不论是写代码的能力,想难题的能力,算法的全面性,都完全不堪一击。感觉上那是一个其他学校的水平都在飞跃的时期,但我们原地踏步了一年。随着水平的进步,老队员也不能再起到更大的作用,比如当时像线段树、并查集这些东西,大部分老队员也都不懂,当时我记得万涛为Kruskal的实现苦闷了很久,后来我们才知道原来还有一种叫并查集的这种东西。(当然现在这些东西几乎是所有ACMer的基本功了,这是后话)基本上是参加完比赛,看看大牛们的讨论,如果是自己完全不知所云的东西,再赶紧找资料去学,就这样一点点摸索下来。到比赛开始前,应该说从绝对实力上我们已经差不多超过了上一年的Diablo,但和相对其他学校来说,可以说只退不进。网络预赛也很清楚地体现了这点,虽然我们拿一个名额是肯定没有问题,但真的是就没有办法再前进一名了。

然后稀里糊涂的,我所参加的第一场Regional——马尼拉赛区就要开始了。TJU参加国外赛区是从04年开始的,因为当时感觉在国外出线相对容易,那一年diablo在印度拿了第5名,虽然仍是没有出线,但毕竟是在当时最可能成功的方式,所以每年参加国外赛区的传统就延续了下来。这场比赛开创了我的很多个第一次:第一次参加ACM现场赛;第一次出国;第一次坐飞机;第一次住比较高级的酒店……比赛过程具体的细节我不多提了,大家感兴趣的可以去看ACM版精华区里当年写的记录,最后我们是做了5题排第八,跟冠军差了好几道题。这个成绩对一个初次参赛的队伍来言应该说还并不算太差,再考虑到马尼拉那种混乱的情况——Board只能看到题数,气球不对应题目,题目描述不清导致Clarification在PC^2里堆上好几页,等等——当时我们哪见过这阵势,那个囧啊。记得那次是我在最后几分钟搞过了一个描述很不清楚的模拟题,然后我们还很激动了一下。虽然说出国比赛就是为了争取一下Final,但以我们那时的实力想Final实在是太过yy,总之对我来说这还是一个可以接受的成绩,只是不知道Mr.Yu当时的想法了。

Manila 2005

Manila 2005

第二场比赛的杭州赛区是强队云集,几所传统强校的牛队就不用说了,剩下的牛队(基本都是当年在POJ前几名的常客,现在写下这些名字真是充满唏嘘,不知还有多少老人记得)比如HUST的Achilles和Aquarius, UESTC的semiconductor,XMU的pcc,HIT的Katyusha和Eureka等等,都是在平时训练赛里我们感觉完全比不过的队伍,所以当时基本上是报着Honorable Mention的决心去的。最后做了3个题,一个弱题,一个简单DP,一个最后乱搞出来的数值积分,最后队伍排名三十多,是一个铜奖。这个成绩看上去平淡无奇,但在当时已经足够让我们兴奋了。

Hangzhou 2005

Hangzhou 2005

其他队伍里的比赛里,成都赛区的题目很诡异,Hunter队在很囧地没有做出题,北京赛区Rocket队和女队2000ducks分获银奖和铜奖。这一年的比赛结束后,主要由03级队员组成的Hunter, 2000ducks和CCTM都退役了,由4个04级队员组成的Rocket队决定留下来。我自己倒是完全没有考虑什么退役的事,只感觉自己的实力只被发掘了一小部分而已,我很坚定地相信第二年我们会有一个令人震憾的成绩。

(待续)

我和我的ACM-ICPC (2)

[2. 初生牛犊]

先把ACM的话题放一下,我想有一件事可能会有人有兴趣,那就是我进天大时的专业是社会科学与外国语学院英语专业。这件很诡异的事情是样子的,高考完事得了一个不上不下的分数以后,我就想求稳一下,而天大按往年规律来看应该是一个“小年”,我的分数应该至少超过录取线二三十分左右,所以就很信心满满地报了几个喜欢的专业:第一当然是计算机,然后好像是自动化和电信,然后下面几个实在不知道填什么了,就开始乱填,鬼使神差就写了个英语(虽然这是个文科专业,但文科理科生都招)。然后录取线出来发现估计严重失误,比我想象的高得多,然后我就差不多正好压线进,然后就被分到第四志愿——英语了(计算机在我们省那时候貌似仍然是大热门专业,不比录取线高很多是进不了的)刚开始的时候还在为能进天大而感觉挺高兴的,很快发现英语系确实不太适合我。(跑题几句,我并不是说这个专业不好,我知道在天大这个工科学校大家对这样的文科专业确实不很重视,但希望大家明白,在社外学院同样有很多令人尊敬的老师、令人佩服的优秀同学,我从他们身上学到了很多。{还有,很多很多MM啊~} 对于选专业问题我的看法是,没有好不好,只有适合不适合、喜欢不喜欢,而我确实更适合计算机。另外还有就是,艺多不压身,不喜欢的课程实在绕不开的话也不妨学一下,说不定什么时候就会用到。比如现在我要做一些自然语言处理方面的东西,就有点后悔当初没把语言学的东西好好看看,那样的话现在就会省事些了。)为了能转专业,当时在接触ACM之前我还很花了功夫去准备高数之类的东西(这些课英语专业不学,但转专业考试要考)。而最终我是在大一升大二的时候转到了软件学院,实话来讲我是更倾向于转到计算机的(主要是学费问题),但因为转计算机必须在本专业排名前10%且必须参加转专业考试,虽然我的大一成绩足够资格,但专试的科目像高数什么的我们专业都不学的,因为后来沉迷于ACM的关系也没有认真自学过,所以估计就很难成功。而当时软件学院有一个特殊政策(我不清楚现在还有没有)就是不必参加考试,只要通过面试即可,再加上于老师的推荐,相对来说容易得多,所以就选择了软件学院。顺便提一句,我认为软件学院这个措施很好,能够让确实对计算机感兴趣的同学学到自己喜欢的东西,比如我们这届几个转专业的同学,和我比较熟悉的像应翔(cnhawk)、张钊(GDC)等等都在转专业后表现得很出色。

好了,文科男的故事讲完了,继续说ACM。04年冬天,某次去综合实验楼上机的时候,看到楼外面挂着一个横幅,就是说电信学院(当时还没有计算机学院)科协主办的计算机程序设计比赛,然后我就上天外天去找相关的活动信息,发邮件报了名。然后发现天外天首页上有指向求实BBS的链接,很有兴趣地点进去了,正好在首页上就有一篇ACM版的文章(我们知道被m的文章会按一定机率显示在首页),看到“ACM国际大学生程序设计”这个名字,我才回想起来原来真的有这个比赛,而且在天大真的有那么多关注这个的人(当然比起现在来不在一个数量级的),于是就有了这篇帖子(当时注册帐号是很容易的):

在ACM版的第一帖

在ACM版的第一帖

当然,这里我是怕人家不收,腆着脸说自己参加过OI,懂得一些数据结构和算法,其实我知道我自己会的那点东西根本就还不上道儿。后来,hill给我回了一封信,这信我现在还留着(已得到hill允许公布):

Hill给我的回信

Hill给我的回信

(从这封信也可以看出TJU ACM的发展了,从当年的50题入队到现在与入队无关的随队训练都要选拔,现在的小朋友们不要太羡慕啊,呵呵)

有时候我就想,当时ACM比赛在天大的影响力还很小很小,就连计算机系和软件学院的很多同学都不知道,如果我不是刚好路过时看到比赛的横幅,或者没有乱点一通撞进了BBS上的ACM版,真的很难想象我这个英语专业的学生和一个在计算机专业都还默默无闻的编程比赛之间能有什么交集。生活真的好像是由一系列的偶然组成,其中任何一件事发生一点改变,也许后面的结果就完全不同。但它确实就那样的发生了,而我们也再没有机会退回去看看另一种可能。

哦对了,还有那场比赛,也是挺好玩的,据说是他们找BunnyQ出的题,比赛形式有点不伦不类,一共四道题,你写好一道后就告诉staff,然后就会有一个气球,其实这时候还不知道题目对错,是在赛后评测的。最后我貌似是四道都做了(很水很水的题,比我以前在Ural上做的那些还水),然后这场比赛就很囧的被我这个社外学院的大一新生拿了冠军……当然也是因为没有多少牛人参加,当时ACM队的里的人都没参加,后来认识的人里面好像也就秘中凯(washington)参加了吧。

后来我就和队伍联系上了,有一天被于老师叫到当时的训练场地——网络中心旁边的软件学院小机房见了一面。那天印象里是队员们正在做一场POJ上的练习赛,我还跟风做了一道水题,这也是我在POJ的第一次提交:

我在POJ的第一次提交

我在POJ的第一次提交

然后呢,就是在ZOJ上向着50题的目标努力了(可惜因为那次ZOJ的挂掉,我在ZOJ的第一次提交已经找不到了)。Pascal转C是很简单的事,ZOJ上的水题也比Ural上多得多,所以这个目标对我来说还不算太困难。到放寒假前我已经做了80道左右,排进了ZOJ的前1000名,当时还激动地发帖庆祝了下。然后再开学以后买了台电脑(当时还管得不严,大一买电脑也没啥事),不用天天泡在综合实验楼的机房了,那段时间过得极high,所有的课能逃就逃(此处严重不推荐小朋友们模仿……)还好我高中英语的底子还算凑和,英语专业的考试勉强都能应付过去,然后几乎全部时间都用来看书和做题。每天早晨睁开眼就上ZOJ,遇到实在不能逃的课就拿着一本CLRS到课上偷着看(当时CLRS还没中译版,后来我从来不怵英文书就是那时候被逼出来的),晚上临睡前一定要读一道难题,一边想一边睡过去。我想如果做过ACM的话,大家应该都有一段类似的疯狂经历,那是一个水平呈指数增长的阶段,感觉每一天的自己都比前一天强,每一分钟都在学习新的东西。对于我这个半吊子前OIer来说尤其是这样:在高中的那段时间,我的学习是完全不成体系的,解题的时候基本没有算法可言,完全是朴素的思路或是依赖于偶尔的灵光一闪,当时感觉最无奈的一件事就是TLE。而现在忽然发现,随着学习的深入,两年以前那些让我无可奈何的题目,陆陆续续都被解决掉了,那种不断超越自己的感觉真的是无比美妙。

这段时间有一个很重要的事情就是05年上半年上届老队员的讲座,以现在的眼光来看可以说是入门级的内容,但对于当时的我来说实在是宝贵的学习机会,给我印象最深的是Oxford讲的Prim和Dijkstra,美妙的算法一下子就把我征服了,听完讲座马上回去把能切的题都切掉了。还有一个让我印象深刻的事就是学习DP的时候,我前面说过高中那几个月这个东西我就一直没明白过来,虽然有时候也能照猫画虎做出几个,但总是感觉没有体会到这种算法设计思想的本质。然后某一天我就下定决心要把它弄明白,趴在床上把王晓东那本《算法分析与程序设计》里面的几个例子翻来覆去地看啊看啊,突然就一下子全明白了,那个词怎么说来着,“醍醐灌顶”,什么状态表示、转移方程,所有这些线索一下子理顺清楚了,这个困扰我两年的问题竟然就在那一瞬间解决,那时候真的激动地要几乎要叫出来。然后我做的事就是打开ZOJ,把之前想过但不会做的题尝试着一个个往DP上套,一下子又解决掉一大片题目。后来最后的两次讲座我还被于老师要求上去讲东西,于是就把刚明白一点的DP讲了讲,似乎效果还不错,呵呵。

04年的冬天和05年上半年我就是在这样一种痴狂的状态下度过的。暑假集训开始前我在ZOJ做了400多道题,排进前100了,在所有新队员里面是最多的,如果只从题数上看已经达到了上一年一队队员的程度。而我也终于发现,我已经无可救药的爱上了这个比赛。

(待续)

我和我的ACM-ICPC (1)

//为简便起见,下文统一以“ACM”代指“ACM-ICPC国际大学生程序设计竞赛”。

[0. Introduction]

从成都回来以后一直还是有点处于失魂落魄的状态。最近轻闲了些,这篇总结/感想也不想再拖下去了。写得很乱,估计要让一些期待已久的童鞋们失望了,哈哈。

当年,一个入校不到半年的文科生,在嘈杂吵嚷的综合实验楼机房里,打开ZOJ上的第一道题目,把FAQ里的程序抄下来提交,然后很高兴地看到了一个 红红的“Accepted”的时候,他没有想到,这个单词从此将陪伴他四年。四年时间,成功与失败,喜悦与悲伤,可以说我都深深体验到了。金银铜奖,世界 决赛,各个赛区,各路牛人,各色气球,各处风景,各种心情,有时候跟队里的学弟学妹闲聊,就像在讲一个个尘封已久的故事。

让我们从头开始:

[1. 史前时代]

/* 这段经历在我第一年比赛结束后写的总结中也提到过,不过为了完整起见,还是再复述一遍,大家可以跳过。 */

我 这人也许天生就是码农的命,小学四五年级(人老了就喜欢回忆,请原谅我扯这么远-_-),我们那边流行“小霸王学习机”(不知现在的90后小朋友们还知道 这个东西不,嘿嘿),人家都玩那些任天堂卡带游戏玩得正high的时候,我却鬼使神差地对里面一个叫做GBASIC,一进去就是黑乎乎一片的东西产生了兴 趣,当然周围所有人都不懂这个东西,不过学习机附带的说明书很厚道,把整个BASIC语言的语法都讲了一遍,这就是我的编程启蒙了。当时我学得那个 high啊,不懂英文,那些INPUT啊PRINT啊一个字母一个字母硬记;没有存储设备,一关机就什么都没了,于是只好把写好的程序抄在笔记本上,每次 开机再把程序全敲进去,就这样居然写出好几个上千行的程序,像什么台球啊扑克牌游戏啊什么的,程序抄了挺厚一本。当然以现在的眼光来看写的都是弱得不得了 的东西,不过当时确实很happy。

其实我一直不知道我到底算不算是“有OI基础”,情况是这样的,我所在的那个高中是在一个小县 城,虽然好歹算个省重点,数学竞赛、物理竞赛啥的也出过几个牛人,但几乎没有什么成体系的训练,更从来没有人真正做过OI这个东西。我上高二时候的某一 天,突然老师说竞赛培训开始了,有数学、物理、生物、计算机啥啥的,然后一批人图新鲜就去听计算机竞赛讲课了,讲的是Pascal语言,然后第二节课就没 几个人了……老师就是给我们讲计算机基础课的老师,话说基本上全校跟计算机有关的东西都是她负责,然后她把Pascal的语法讲完以后也就没啥可教的 了……不过当时家里有电脑能上网了,知道当时的OIer有个大榕树论坛(来天大才得知,BunnyQ还曾经是版主),就类似现在POJ论坛在ACMer里 的地位,从那上面知道了要想在比赛中有成绩必须在Online Judge上做题,当时知道的OJ有UVa和Ural (我不清楚同济的TOJ是什么时候建立的了,反正当时我应该是没有听说过),于是就开始做Ural。做的过程相当艰苦,首先是没有时间,学校管理很严,每 周放半天假,平时根本不能出校门,在学校里又没机会上网。因为我家离学校很近,向学校申请了每天中午可以回家吃饭。我就利用这一两个小时的时间赶紧上网把 题目抄下来先,然后拿到学校翻着词典弄明白什么意思,然后在纸上写好程序,等第二天再回家的时候敲进去提交,如果过了再抄几道新题,如果WA了TLE了或 者直接就不过Sample就无奈了,只能再回学校慢慢想怎么回事。然后最主要的困难是很少有学习的机会,几乎不可能和周围的老师同学讨论算法问题,上网的机会也很少,唯一的一本资料还是托同学在石家庄才买到的江文哉的<金牌之路>(这本书现在我还留着,zxj那里也有一本,还算不错,虽然不少内容很有东拼西凑的嫌疑),当时这本书看得我很崩溃,什么动态规划、网络流之类的,根本不明白。就这样折腾了几个月吧,一共也就只在Ural上做了几十道水题(当时Ural上有200多道题吧好像)。

我的第一个Ural帐号

我的第一个Ural帐号(密码已经忘了-_-)

最早的几次在Ural上的提交

最早的几次在Ural上的提交

然 后那年的NOIP就到了,我们学校只有我一个人进了复赛。复赛要去石家庄,那还是我第一次没有父母的情况下跑到一百公里以外的地方,呵呵。复赛发生了最窘 的事,我不知怎么回事被弄在了普及组(也就是初中组),当时我并不知道普及组就是初中组的意思,然后比完了出了考场才知道,那个崩溃啊……当时做的时候我 就心里纳闷怎么觉得题目比平时练的简单一些呢……后来检测结果是60多分(满分100),也不知道在普及组里是个什么名次>_<。不过以我当 时的水平就算没有被分错组也确实拿不到什么有意义的名次,在比赛之前也从来根本没敢奢望拿个省一等什么的,确实水平太弱,没什么好说的。(话说,现在接触到的小朋友们都是完全不把省一当回事的级别了-_-)

接下来的时间当然还是高考重要,于是我的短暂的OI生涯就这么很窘地结束了。不过我从来不肯老老实实用功学习的,在高中这期间又还搞了不少自认为很酷的事,比如折腾软件破解,现在在看雪论坛(bbs.pediy.com)上的较早期的资料里应该还有不少”RoBa”这个ID的痕迹,不过那是另外一个跟ACM无关的故事了,这里不再多提。

当时我是知道大学里有ACM这个比赛的,不过并没有报特别大的期望。以至于后来的时间几乎把ACM这回事忘了,来天大之后也并没有主动去联系组织,直到某一天……

(待续)