Life - 行者无疆 始于足下 - 行走,思考,在路上

What I Want

朋友来泉,浙大往事,美容柠檬茶一壶,谈到了这个问题。

  • 读懂《GEB》《皇帝新脑》,探寻数学基础和计算理论的和谐图景
  • 读读《史记》、《红楼梦》、三毛
  • 学学心理学
  • 赚够一千万
  • 有一辆越野,后备箱装上自己的两轮和背包
  • 创办一所私立学校,实施真正的素质教育,希望能得到开复的帮助,在中国开创一个模式
  • 单车穿越黑昌公路,在去西藏看看
  • 去东南亚走走,看看阿黎
  • 去学钢琴和吉他
  • 练练书法,自己一张大桌子,写几个字
  • 开一个吧,类似于浙大往事的那种
  • 有自己的窝,窝里面贴满自己旅行的照片
  • 带着自己的爱人去旅行,辞掉一切,无法无天,出去走一次
  • 带着自己的父母去中国各地转转,让他们也见识下外面的世界,享受下剩下的人生
  • 贡献几个开源软件,为开源运动贡献自己的微薄之力
  • 做出几个像样的产品,产生一定的社会价值
  • 做一些公益慈善
  • ……

仔细想想自己的胃口还真是大啊,如果一定要给个期限,我希望是十年吧。嗯。

回家几日

迟到的日志……暑期一直在实习,因此趁着十一长假,又请了8、9号的假期,加上10号周日的一天,整整十天,回家看看父母。

每次回家都比较纠结,首先是买不到到北京的T32坐票,校门口的代售点排队排3个小时,很多人提前十天买票还是连一张坐票都买不到。我买票的那天大概是左脑神经搭右脑上了,要买的是9月30号的票,却说成了10月1号。

30号晚上早早离开公司,回寝室收拾好行李,一个背包,带上笔记本,两本书——一本《鸟哥的Linux私房菜-服务器架设篇》、《数据结构-严蔚敏版》,洗漱,还有给爸妈买的两件小礼物。抱着碰碰运气的思想,我尝试着能不能拿着10月1号的火车票混上9月30号的列车——反正都是无座的。检票口很容易就混过去了,上车的时候碰到一个女检票员死活不让我上,后来我换个口,手指捂着日期检票,就混上去了。

火车上的人就甭说了,提前十天都买不到坐票,可以想象了。一夜无座,过了徐州,人总算少了一点,有了立脚之地,于是我腐败地坐在过道上,闭目休息。好景不长,车厢开始供应早餐,人群就随着餐车的流动起起伏伏。就这样咣当咣当到下午两点,16个小时,沙丁鱼罐头无座火车,说熬也不为过,但也没什么大不了的。

下了火车给父母打了个电话,商讨下一步方案。到承德的火车票只有晚上9点的,去承德的依维柯刚巧走了最后一般,于是我打车到北站,无果,又公交加地铁到六里桥长途客运站,幸运买到了18点20的加班车,然后赶紧找个小馆子吃了碗面,检票上车。由于走高速,原先需要走5个小时的路程走了3个小时不到就到承德了。晚上9点整,在承德火车站前的雕塑前,见到了我的老爸老妈。

上了车,老爸按了下Start按钮,车就发动起来了,缓缓而行——这一刻我真的感到由衷的幸福,自小到大,由于交通不便,每次回家都是无比的纠结;父母风风雨雨年近半百,也终于喘了口气,最起码经济上不再像以前那样紧张。

回家的路上电闪雷鸣,大雾却起,爸爸第一次开这么远的路,也颇有点“险象环生”的味道。凌晨,顺利到家,热粥一锅,葱拌豆腐。送爸一个光科剃须刀,妈一个化妆盒。老妈像一个小女孩似地问我这是干啥用的,我说给你买来装小东西用的,然后老妈收起来放在保鲜柜里了。饱腹而眠。不过家里气温低,棉被厚,还有些干燥,回家第一天,还是睡得不是特别香甜。呵呵。

家中几日主要都在养膘吧,带了两本书,可是一到家中,人立刻变得慵懒,折腾了下andlinuxbblean,体验了下kde for windows,看了下局域网架设的科普知识,弄明白了路由网关的概念。最重要的事情是我学会开车了,嘿。第一天下午跟老爸出去溜,老爸开到城外没多远,说你开吧。于是我们俩就换了位置,松了手刹,踩上脚刹,启动,挂档,轻踩油门,车就这样溜出去了耶!第一天在城外道路溜了50公里左右,紧接着又回到县城,在车堆里钻了两圈,说到底我还真是佩服我的勇气啊……第二天又在县城里转了七八圈,第三次再上街就是我带着老妈转了……自动挡的车还真是好开啊。不过小县城里开车颇不规范,路口没有红绿灯,行人左穿右突,司机没有几个系安全带的……总之是安全为大,切不可以无知者无畏的精神显摆得瑟,因小失大。

老妈说我穿的破破烂烂,一点也不像个“洋”学生样子,我寻思着我本来也不是个洋学生啊……还是被老妈拉着去买衣服了,总共就三条街,第一条街买了个外套,第二条街买了套保暖内衣,第三条街逛了一个上午买了套Lining运动装。其实这种逛街更多的是一种炫耀吧。农村人讲究个面子,带着一个浙大回来的洋学生,人高马大,神采奕奕,走在路上碰见人了就听人赞“啊,这是你大儿子啊,都这么高了,在哪里上学呐,搞对象了没,工作找的不错吧”,老妈就会满脸笑容“哪儿如你们家俩闺女儿呀,这大老远的,一年也不会来一趟,有啥用”。

第四件事情是我给老妈办了农行和建行的网银并教会了她使用方法并且成功的蹭到了几百块钱转账的小费。其实小费是小事,重要的是以后冬夏寒暑除了存钱,妈妈不用再去银行排队了。

第五件事情是爷爷的身体明显不行了,已经出现了大小便问题,这也让我开始担心他能否熬过这个冬天,82的人了。我给爷爷买了烤白薯,给他焐在被子下,和他聊聊天。人老了,开始变得糊涂,时而清醒,多数糊涂,说一些不着调的话。比如会把自己的大闺女叫大妹子,却把自己的老儿媳妇叫老妹子。倒还是认识我,跟我说自己命不久矣之类的话。我能说什么呢?我说什么他也听不懂,这让我想起了代沟这个字眼。仔细想想,这辈子再见父母面的时间,不太会超过200次了。100次算平均水平了。所以每次回家都尽量多呆几天,推掉同学聚会、推掉聚餐吃饭,只是多陪陪老妈逛逛街,多跟老爸侃侃工作吹吹牛,以防以后无话可说,呵呵。

第六件事情就是叔叔回来,我们早晨起床去爬山,然后我发现家乡的秋景还是很漂亮的。有时候想想自己花了怎样怎样的钱,到了多少多少的车,去了怎样怎样的地方,看了怎样怎样的风景,其实回到家来一看,哦,原来两者也没有太大太本质的差别,那么,我出去又是去干什么了呢?我常常想,也许我们这些在大城里“打拼”,“奋斗”的人,其幸福指数,或者生活品质并不一定比如我家乡一般的小县城人高。也许我们发现我们赚钱赚了一辈子,内心向往的却是一个家,一个小店,一个小房子,一个小胡同的生活,这就是我家乡的生活。

9号上午坐车返杭。又回家的一个包变成了三个包——多了一包衣服和一包家乡土特产——栗子、酸梨、大枣。先做了6个小时的车到天津通莎客运站,然后到叔叔家休息下,晚上火锅,之后送到天津滨海机场,告别叔婶,登上晚点的飞机,飞往上海,落虹桥机场。排队打车,45块钱10公里路——上海的交通还真是贵啊。松江九亭,国亭四期,一个身影在等我——那是你,衣裙漫飞;那是你,温柔如水。

我看到了你的脸像月饼一样圆,没有得到我批准自作主张的新头型,淘宝上18块钱的红色外套,妞,你知道吗,这种场景会让我感到很温馨。

10号下午回杭,留了妈妈带的“土特产”给妞,带走妞的抱怨——“蜻蜓点水似的到来,哼”。6点到玉泉,回到寝室,88 work版,又开始了新一轮的奋斗。

流水帐

4、5号从上海回来后,我自己的cpu就一直在以100%的负载在运行,每天平均睡不到7个小时,两周不到经历了各种事情,需要做个总结,否则下次再做总结恐怕写不下了。总结的风格依然是流水帐,技术加生活。

6号上班做了一个30+页的ppt,对自己两个月的实习成果做一个总结,系统描述了整个视频生产系统的设计、编程实现、工具使用细节等等,晚上部门会议做了报告,效果还不错。7、8两天写出了自己人生的第一个Python脚本,脚本的功能是分析nginx访问日志,提取用户信息,判断某个用户是否完整看完了某个视频等等,形象化一点,就是把类似于下面的log:

172.24.106.236 - - [01/Sep/2010:17:57:54 +0800] "-" 400 0 "-" "-" "-"
172.24.106.237 - - [01/Sep/2010:17:57:56 +0800] "-" 400 0 "-" "-" "-"
116.247.116.238 - - [01/Sep/2010:17:58:11 +0800] "GET /video/super_mpg_video/demo/taohua.f4v HTTP/1.1" 200 867480 "http://110.75.2.195/player/thvp/thVideoPlayer.swf?video=http://110.75.2.195/video/super_mpg_video/demo/taohua.f4v" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)" "-"
172.24.106.236 - - [01/Sep/2010:17:58:24 +0800] "-" 400 0 "-" "-" "-"
172.24.106.237 - - [01/Sep/2010:17:58:26 +0800] "-" 400 0 "-" "-" "-"
116.247.116.238 - - [01/Sep/2010:17:58:53 +0800] "GET /video/super_mpg_video/demo/taohua.f4v HTTP/1.1" 200 2097152 "http://110.75.2.195/player/thvp/thVideoPlayer.swf?video=http://110.75.2.195/video/super_mpg_video/demo/taohua.f4v" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)" "-"
172.24.106.236 - - [01/Sep/2010:17:58:55 +0800] "-" 400 0 "-" "-" "-"
172.24.106.237 - - [01/Sep/2010:17:58:56 +0800] "-" 400 0 "-" "-" "-"
172.24.106.236 - - [01/Sep/2010:17:59:25 +0800] "-" 400 0 "-" "-" "-"
172.24.106.237 - - [01/Sep/2010:17:59:26 +0800] "-" 400 0 "-" "-" "-"
172.24.106.236 - - [01/Sep/2010:17:59:55 +0800] "-" 400 0 "-" "-" "-"
172.24.106.237 - - [01/Sep/2010:17:59:56 +0800] "-" 400 0 "-" "-" "-"
172.24.106.236 - - [01/Sep/2010:18:00:25 +0800] "-" 400 0 "-" "-" "-"
172.24.106.237 - - [01/Sep/2010:18:00:26 +0800] "-" 400 0 "-" "-" "-"
59.42.126.48 - - [01/Sep/2010:18:00:51 +0800] "GET /video/super_mpg_video/20100826/moribingdu/moribingdu.f4v?th_key=4c7e3d82;1a7b6ebe;8292192f571cb7bbed3024e3998b5631&start=46582231&end=67158965 HTTP/1.1" 200 771638 "http://110.75.2.195/player/thvp/thVideoPlayer.swf?video=http://110.75.2.195/video/super_mpg_video/20100826/moribingdu/moribingdu.f4v&th_key=" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)" "-"
172.24.106.236 - - [01/Sep/2010:18:00:55 +0800] "-" 400 0 "-" "-" "-"
172.24.106.237 - - [01/Sep/2010:18:00:56 +0800] "-" 400 0 "-" "-" "-"
172.24.106.236 - - [01/Sep/2010:18:01:25 +0800] "-" 400 0 "-" "-" "-"
172.24.106.237 - - [01/Sep/2010:18:01:26 +0800] "-" 400 0 "-" "-" "-"
116.247.116.238 - - [01/Sep/2010:18:01:43 +0800] "GET /video/super_mpg_video/demo/taohua.f4v?start=20998492&end=41622742 HTTP/1.1" 200 20624263 "http://110.75.2.195/player/thvp/thVideoPlayer.swf?video=http://110.75.2.195/video/super_mpg_video/demo/taohua.f4v" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)" "-"
172.24.106.236 - - [01/Sep/2010:18:01:55 +0800] "-" 400 0 "-" "-" "-"
172.24.106.237 - - [01/Sep/2010:18:01:56 +0800] "-" 400 0 "-" "-" "-"

转换成相应形象化的显示:



整个Python Script大概170多行,同时封装了几十行的Shell Script,算法是自己拍脑袋想出来的,具体描述可以另外写一篇技术文章了。脚本成形的过程渐渐体会到了Python的方便,结合了脚本语言的便捷性和高级语言的强大性,实乃居家旅行打家劫舍养家糊口之利器也。

9、10两天请假。9号睡了个小懒觉,然后去了趟校医院又开了一个星期的药,花掉100大洋左右,午饭后和同学会首,三人打车去西溪北园,准备CUMCM 2010。到了那边也没什么事情,下午3点半左右又走回玉泉,拿了实习记录本,去找导师签字。到了导师公司又等了半个小时,跟导师汇报下暑假实习的情况和自己要找工作的打算,简单谈了谈,骗了个90分回来。晚饭在西溪北园食堂吃的,饭后想到布袋也住在北园,约好去看她,巧的是碰到了哈哈、小包、破船一行,他们前脚刚要走,我后脚就跟过来了。由于布袋还要导尿,不太方便,我就一个人在北园里面转了几圈,买了个大西瓜和几桶泡面——西瓜给布袋,泡面是自己的。与布袋聊了有两个小时吧,听了她在千岛湖训练的很多故事,以及体制内运动员训练的一些内幕,加上他们从千岛湖逃窜的惊险一幕,走之前和布袋掰了手腕——当然我是不会输的,不过布袋的力气已经非常出色了,我敢说一般的男生不是她的对手;享受了阿姨自制的酸奶,一袋乳酸菌,放入保温瓶,自然发酵,有点西藏酸奶的味道,赞的。

11号早晨8点多拿到了CUMCM 2010的题目,A题是一道看似简单但非常复杂的几何计算题,B题就一句话——让你评估一下上海世博会的影响力。我倾向于选B题,因为看起来A题不太难——事实证明这个看起来不太难的结论是错误的,而且发挥余地有限;而B题的话只要找准一个切入点,成功的概率非常的大,即便不济,结果也总能忽悠出来的,不会太差。但是另外两名队友经过深思熟虑还是倾向于A题,于是少数服从多数,开始搞A题。第一天还是比较顺利的,我们顺利地解决了第一问,而第二问显然也是基于第一问的,这让我们每个人都面带笑容进入了梦乡——如此下去,第二天晚上就可以搞定第二问,第三天就有一整天的时间来写论文。

三人的分工基本上是这样,解题思路由三人共同商讨,然后lyf负责算积分表达式,ly负责matlab编程和主要的数据拟合,我对LaTeX比较熟,所以除了解题思路和简单的数据处理,主要是看文档、写文档。

第一天的乐观到了第二天的傍晚就变成了焦虑——第二问的积分表达式由于过于复杂以致无法积出来,ly和lyf用matlab算这个符号积分会卡住,我说matlab的符号计算比较弱,于是我在linux平台上找到了著名的符号运算软件maxima,简单配置了Emacs+imaxima,来算这个积分,maxima比较智能,会给你一些提示,比如提示你某个变量是positive, negative or zero? 因为这个变量值不同积分结果也不同。总之积分表达式很复杂,我用maxima算,不同的条件算出来也不一样,有时候算出来竟然是个复数!探索良久,符号积分的方法宣告失败,于是我们转而研究能否用数值积分的方法来算出一部分数据,打表拟合,然后根据拟合的结果判定拟合曲线和实际数据的相似性,确定最后的方程参数。但数值积分是一个比较棘手的东西,除了调用已有数学软件的方法,我们没有能力自己去写。ly和lyf研究matlab,我则找到了maxima的数值积分方法romberg,但是最后也宣告失败,至此,已经是第二天晚上10点多了……士气开始变的低落,ly躺在床上,lyf上网看看别的东西,我也在打酱油般地继续着一些无谓的探索——对于A题,我们已经黔驴技穷,换B题,还剩一天一夜,但是也有些来不及了——更重要的是大家都不太想做下去了。

12号早晨大家都睡到自然醒,心情也不是太好——毕竟没有做出题目是件挺没面子的事情。我提议我们上午再按照打表的方法重新计算一下,然后大家随便算算,到中午基本上就彻底放弃了……于是乎我们就解脱了——ly开始玩一些网页小游戏,lyf上网或者单机游戏,我呢,看完了《当幸福来窍门》,修改了一下午自己的简历,找Ouka帮忙挑了挑刺,投了华为、网易等四五家公司。

13号早晨老师打来电话,问我们论文咋么还不交,我们就坦白交代了说自己没有做出来,论文也没有写,于是我们的CUMCM 2010打酱油之旅就这样结束了。顺便提下这里提供的盒饭还是很不错的,虽然题目没有做出来,但还是赚了三天的伙食——太邪恶了……

离开西溪后冒着小雨骑车到了公司,刚好赶上早会。然后就开始了工作——看,角色转换如此之快。晚上google的宣讲会加现场笔试,七点半到达现场,果然人山人海。8点挤到了位子,开始笔试。笔试总共10道选择和3道编程算法题目,时间是90分钟。选择题大概记得的几道:

  1. 以下各种排序种哪几种是稳定排序?
  2. 二叉树的前序、中序和后序遍历中,已知哪两种可以唯一却确定一棵二叉树?
  3. {1, 2, 3, ..., 20}集合中,挑选出3个数字,使得这3个数字不完全相邻,如{1, 2, 3}, {4, 5, 6},有多少种挑法?
  4. 32位机器表示的有符号数最小值是多少?
  5. Unix文件的一道题目?
  6. 1024!的结尾有多少个零?
  7. c语言指针的一道题?
  8. 数组中寻找中位数的算法复杂度是多少?
  9. 访问内存性能的一道题目。
  10. 忘了……

剩下的3道编程题目,第一道题目是编程求两个数组集合A[m], B[n]的交集;第二道是离散事件模拟,内容和严老那本经典的《数据结构——c语言版》第3章栈和队列的最后一节一样;第三道应该是桶排序,就是给定n个数,大小均在[1, n^2-1],在保证时间最优的前提下尽可能地优化空间。

google笔试的结果就是我理所当然的被bs了,虽然我觉得答得还算凑合吧,不过连面试的机会都不给,这个招聘也显得有点酱油的味道了——当然,比如像今年的百度之星冠军hh,据说连google的面试官都称之为大牛了,这是另类。

剩下的时间主要是借工作的时间学习,修炼秘密武器,看完了w3c school上的大部分教程,重点是关于XML的,XSL、XPath、XQuery、DTD、Schema等等,研究了Unicode编码的基本知识(UTF-8、UTF-16、UTF-32,Big-Endian,Little-Endian等),研究了python读写excel文件的几个模块(xlrd, xlwt, xlutils, pyexcelerator)和python有关xml的一些模块(lxml, jaxml等),基本完成了《Learning Python》,除了Class看得比较少,剩下的就是熟悉一些常用的mobule,多写写Python脚本,有时间再了解了解Python知名的开发框架,差不多了,剩下的按需学习。

14号是好友Ouka同志的22岁生日,四年前的今日我拿到了化学竞赛的一等奖,收到Ouka祝福短信和亲切指导若干,四年后的今日,我在公司实习,趁午休时间简单改了个小程序,一程序员间独特的方式送出我的生日祝福。Happy Ouka, Fight Ouka。

17号中午回到玉泉,参加了网易有道搜索的机试,两道题,两个小时,zoj平台,20个测试点,总分270,有点类似于NOI,是按照score排名的。结果还是不错的,许久为碰c++,还是拿下了260分,整场50人排名15%左右吧。两道题目如下:

 
奇偶矩阵

Time Limit: 1 Second      Memory Limit: 32768 KB



给定一个N行,M列的正整数组成的矩阵,求其中的一个子矩阵,使得奇数的个数与偶数的个数差值的绝对值最大

Input

每个文件包含一个测试数据。第一行是两个整数,N,M 表示矩阵的大小 1<=N,M<=100。 接下来N行,每行M个正整数,对应为矩阵中的元素,所有的数不超过2^30。

Output

输出包含一行,为子矩阵中奇数个数与偶数个数差值绝对值的最大值。

Sample Input
				3 3
1 2 3
3 2 1
1 1 1
Sample Output
				5
最大和

Time Limit: 5 Seconds      Memory Limit: 32768 KB



给定两个整数数组分别为A,B。你可以从A,B中分别挑选一个数,将他们的乘积作为你的得分。你可以挑选任意次,但是每个数只能被挑选一次。 求你最后所能得到的分值和的最大值,你的初始分数为0

Input

每个文件包含一个测试数据。 第一行是一个正整数N,为数组A的长度。 第二行为N个整数,分别为A中的元素。 第三行是一个正整数M,为数组B的长度。 第四行为M个整数,分别为B中的元素。 1<=M,N<=10^6

Output

输出结果包含一行,为你所能得到的最大的分之和。A,B中的数及最后的结果均不超过2^30

Sample Input
				4
3 2 6 1
3 
2 6 3
Sample Output
				49

第一提看上去比较悬,但仔细一想其实是个最大子段和的问题,核心算法可以参考ZOJ 1074——我就是这么干的……应用之前需要预处理,就是扫描下整个矩阵,然后用1表示奇数而用-1表示偶数,最后算“矩阵的最大子段和”,这样做下来基本上可以通过4-5个测试点,弥补的方法就是对称性,考虑到奇数和偶数的平等性,用-1表示奇数而用1表示偶数再算一下。整个程序如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define size 102

int DP(int a[],int n);

int main(void)
{
    int m, n;
	int i, j, k;
	int he;
	int max1, max2;

    int a[size][size];
	int b[size][size];
    int sum1[size];
	int sum2[size];

    scanf("%d%d",&m, &n);

    for(i = 1; i <= m; i++)
        for(j = 1; j <= n; j++)
		{
            scanf("%d",&a[i][j]);
    		
			if (a[i][j] % 2 == 0)
			{
				a[i][j] = -1;
				b[i][j] = 1;
			}
			else
			{
				a[i][j] = 1;
				b[i][j] = -1;
			}
		}

    max1 = max2 = -200000000;

    for(i = 1; i <= m; i++)
    {
        memset(sum1, 0, sizeof(sum1));

        for(j = i; j <= m; j++)
        {
            for(k = 1 ; k <= n ; k++)
                sum1[k] += a[j][k];

            he = DP(sum1, n);

            if(he > max1) 
				max1 = he;
        }
    }
    
	for(i = 1; i <= m; i++)
    {
        memset(sum2, 0, sizeof(sum2));

        for(j = i; j <= m; j++)
        {
            for(k = 1 ; k <= n ; k++)
                sum2[k] += b[j][k];

            he = DP(sum2, n);

            if(he > max2) 
				max2 = he;
        }
    }

	if (max1 > max2)
		printf("%d\n",max1);
	else
		printf("%d\n", max2);
    return 0;
}

int DP(int a[],int n)               
{
    int i, f[101];
    int max = -200000000; 
	
    for(i = 2, f[1] = a[1]; i <= n; i++)
    {
        if (f[i - 1] > 0)         
            f[i] = f[i - 1] + a[i];         
        else
            f[i] = a[i];              
    
        if (f[i] > max)               
            max = f[i];
    }

    return max;
}

第二题的思路比较清晰了,需要注意的是负数的情况,考虑四个正数a \leq b, c \leq d,显然ac + bd \geq ad + bc,就是要得到最大值,大大相乘优先。如果遇到负数,负负为正是可以考虑的,正负相乘则需要舍弃。按照这个原则进行排序、分割,在处理下去就不难了。有一个Test Case是Segmentation Fault,最后找到原因了,可惜没有时间了,程序如下:

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>
using namespace std;

int main()
{
	int m, n;
	vector<int> a;
	vector<int> b;

	int i, j;
	int item;
	int s, sum;
	int ai, bi;

	cin >> m;
	for (i = 0; i < m; i++)
	{
		cin >> item;
		a.push_back(item);
	}

	cin >> n;
	for (j = 0; j < n; j++)
	{
		cin >> item;
		b.push_back(item);
	}

	sort(a.begin(), a.end());
	sort(b.begin(), b.end());
	
	for(i = 0; i < a.size(); i++)
	{
		if (a[i] >= 0)
		{
			ai = i;
			break;
		}
	}

	for(i = 0; i < b.size(); i++)
	{
		if (b[i] >= 0)
		{
			bi = i;
			break;
		}
	}

	sum = 0;
	for(i = 0, j = 0; (i < ai) && (j < bi); i++, j++)
	{
		sum += a[i] * b[j];
	}

	for(i = a.size() - 1, j = b.size() - 1; (i >= ai) && (j >= bi); i--, j--)
	{
		sum += a[i] * b[j];
	}

	cout << sum << endl;

	return 0;
}

最后的结果还是不错的,这也让我感到惊喜,好久都没有如此开心过了,期待面试通知。

另外,现在所在的实习公司已经有了口头上的offer,给我一个月的时间考虑,在实习结束之前给答复,待遇和淘宝应届是差不多的,而且创业阶段,发展空间还是非常大的,我在部门也受到重视,我相信继续实习一年,毕业后我会处于一个比较高的起点,这样的结果,对于我这么一个挂科达到两位数的刚毕业的本科来说,应该算很不多的了,但是我还是在犹豫。老实说我还是想去大的公司体验两年,体验下大的平台和大的气质;妈妈每次打电话都让我回北京,家近、方便。所以我还在继续投简历。

18号下去2:00-3:00,百度大牛徐串的技术讲座;19号下午2:00,百度内推小型见面会;20号晚6:30,MSTC主席pluskid大神的小课堂,各种大牛,膜拜。

除了这些,印度宝莱坞的电影《三个傻瓜》前前后后看了4遍,哭笑中带来人生的思考;看了《当幸福来敲门》,我喜欢那种“He must have a nice pants”的自信;看了柴静的《面对面》——李连杰“壹基金危机”,“侠之大者,为国为民”,李连杰当之无愧;“方向对了,就不怕路远”,加油吧,Lox!

8月的总结

忙碌充实的一个月。第一周研究ffmpeg,转码脚本初步完成,转交给QA测试;4、5号两天周末去了上海;第二周回来研究继续DVDrip和蓝光DVD的初步研究,确立了转码标准,初步研究了字幕合并的问题;第三周听了taobao的一个性能测试培训,优化脚本的转换速度到原来的3倍,周四晚上奔上海呆了三天–睡了两天地铺……见了见几年没见的老同学dx(比我高一头却经常被我扁的小弟),lwc(挺投缘的朋友,这么久没见,我的第一句话是“是不是每个女生大学里的第一件事情就是把头发养长啊?“,然后就听见了L爽朗的笑声);第四周主要在研究字幕合并问题,接触了mencoder工具,由于首批收费视频要上线,所以几乎每天都加班,为运营提供技术支持–周三00:30离开公司、周四9:30离开、周五00:10离开公司、周六早9:00-12:00来加班,忙碌崩溃的一周,成果是http://hua.taobao.com/shop/shop_home.htm?sellerid=60&inshop=yes ,感觉一是做产品真的很不容易,二是念了这么多年书,终于能做出一些东西来,还是小有成就感的wink。上周日约了一批人去植物园游泳,四米深的池子,九个大老爷们集体跳水的景观还是挺壮观的;天色黑的时候,水底的灯光粼粼闪动、非常漂亮,虽然四米的水压压的我耳朵有些痛,我还是不断地潜下去体验–;我想到了Le grand bleu

技术上还是接触了很多新鲜的概念和名词,"I don't know I don't know" ==> "I know I don't know",在此一并罗列出来:

  • 视频转码方面:
  • Linux
  • Concepts
  • Networking
  • Software Performance Testing
    • 流程:评估、资源申请、计划、准备(环境+数据)、执行验证、调优、报告
    • 指标:虚拟用户和并发、TPS、PV(Page Viewer)、响应时间、CPU利用率、Load(Linux)、TPS波动值、JVM内存走势、FGC
    • 执行方案:单场景、混合场景、用户行为
    • 通过标准:超时概率、错误概率、TPS、TPS波动模型、CPU(大于75%不通过)、Load(每核CPU Load大于1不通过)、JVM、Full GC
    • 工具:Jconsole、Jprofile、Jstat、profiler、Jmap、Nmon、Valgrind、Vmap、VisualVM
  • Others
  • Delicious

翻完潦草不堪的Notebook,想想这一个月看的东西还真挺杂的。除了以上这些,中途走神看了看《大话设计模式》的前面几章;看了《Learning Python》的大部分–但是还没有动手写过程序……感觉书比较啰嗦,一个知识点反反复复的说来说去;看了w3cschool.cn的部分在线教程,重点看了JavaScript,边看边用Emacs Org-mode做笔记,还是挺好用的;阿里内网也有非常多宝贵的资源,上班时间没事,我自己下载了历年来各种培训资料、内部试题、新人手册大概300M左右,看了一半左右,留了个大概印象;看的过程中走神,不知道怎么就点到了Qcon Beijing 2009的网站,又发现了一个宝库,流着口水下载了所有能下的pdf–虽然大部分还看不懂……

除了以上,还有一些IT名人的反思、成长经历也给了我很大的启发:

代码看累了就会走神,偶尔拾到几个贝壳,抄录在本子上–一些话:

  • 我总希望有人在什么地方等我,你也总希望有人在什么地方等你吧(几米《照相本子》)。
  • 幸福的步道,总是那么短,我们可不可以赖着不走。
  • 这是八月初的一个早晨,美国南部的阳光舒迟而透明,流溢着一种久经忧虑的让人鼻酸的、古老而宁静的幸福(张晓风)。
  • 得意时便生失意之悲。
  • 其实不是时间在流失、流逝的是我们自己。
  • 不论怎么样,大家总是一年一年地来到这个路口,然后各自去闯荡(好像来自pluskid的diary)。
  • We had job, we had fun, we had seasons in the sun. But the hills that we climbed, were just seasons out of time.
  • 我的征途是星辰大海。
  • Do not spend all your time on training or studying - this way you will probably become very exhausted and unwilling to compete more. Whatever you do - have fun. Once you find programming is no fun anymore – drop it. Play soccer, find a girlfriend, study something not related to programming, just live a life - programming contests are only programming contests, and nothing more. Don't let them become your life - for your life is much more interesting and colorful.

另外一件小事就是最近总是肚子隐痛,去校医院查了查,做了个涕泪肆流的胃镜,诊断结果是浅表性胃炎,病因应该是幽门螺旋杆菌发炎。开了七八盒药,先吃着看吧。没敢告诉家里,怕家里担心。今天老妈还给我发短信说“我们在提车.东风日产.天籁2.0黑色.自动档.都下来奖金20万“,“在北京.如果你上班需要借给你开呵呵“–心头不自主地酸了一下:这么多年的风风雨雨,从前的老瓦房、大锅土炕、猪圈地窖,到自己的一套房子,到我考上唐山一中保送到浙大,到今天买上了自己的车,我那只有小学文化的母亲,何等不易!

肚子又开始痛了,也是,这么晚了,还不睡,伤身体的。

“宠辱不惊,闲看庭前花开花落; 去留无意,漫随天外云卷云舒“

我想人到最后追求的应该是一种淡定祥和的心态。风雨彩虹、日晒雨淋、雪山草地、高山大河、青灯古寺,或许我们本来就不需要手机,不需要SNS,不需要E-mail,不需要这种高速快节奏的生活。这种速度让人窒息、如同龙卷风一样,瞬息万变,让我们无法掌控自己。人与人之间的交流“贵在心诚,幸在投缘“,整天挂着QQ,好友遍地,却不知道什么时间该找谁说些什么话。我们再也没有提笔书信时的那种思考、没有等待书信时的那种期盼。信息泛滥,手机滴滴嗒嗒,我们在这头时刻准备着–接受别人的审判。这或许是对网络通讯世界的一种讽刺?

road

接下来的安排:9月第一周数模国家赛,三天三夜的拼搏;看完Python和JavaScript,重点看C++算法和Networking;关注各种校园招聘;10月第一周回家呆几天修整,学车考驾照;十一回来结束实习,全面投入找工作事宜,争取在年底搞定;如果有时间出去走走,可选地东北或者东南亚。Over,暂时这样。安。

一个人的自在

6月15日开始找实习,到了25日左右迎来了人生第一个offer——华数淘宝,待遇是60元/天+10元/天的晚餐票。找实习的过程很简短,百度和创新工厂预料之中的悲剧,DeviceVM莫名其妙的简短面试和之后的杳无音信,普联TP-Link的5分钟快餐面试,阿里一封没有下文的邮件、一个打到一半我手机却没电的尴尬电面、一个没有下文的快餐电话,以及来自上海紫竹科技园Intel的漫不经心的“聊聊“,还有十几封泥牛入海的邮件。两周不到,能拿到这个offer,也算是一个不错的结果了。至少这样的结果给了我信心,成绩差没关系,关键是自己有几斤几两。

而后就是无奈的期末考试,算不上奋力一搏,只是应付了事,弃了一门,挂了两门,剩下的几门70的、80的、90的各占三成。至此我的大学还剩下十门考试:

  1. 电路原理(重修)
  2. 线性代数(重修)
  3. 数字电子技术(重修)
  4. 编译原理
  5. 编译系统设计
  6. 计算机组成
  7. 计算机体系结构
  8. 计算机网路
  9. c#程序设计
  10. 软件体系结构

这样的结果,在我的同届预科生中应该算是很悲惨的了。至少很多同学由于多了预科半年的学习时间,到了大三下这个时候,已经完成了除了毕业设计外的全部学业,更有甚者,比如一位我只有过一面之缘的HDJ,已经提前一年毕业,拿了港大的offer——此mm是浙大李志文商学班的,同时也是浙大游泳队队员之一。对于这样的mm,除了客套的ym,更多的是一种敬仰吧——有规划有理想有追求并且能坚持不懈的做下去。

熬到7月6号,总算考完了最后一门——软件工程,在我看来是一门非常虚无非常飘渺的课程,其结果就是我只上过一次课,成绩也算对得起我的到课率了——68分——刚好达到浙大学位证最低成绩要求……

再之后是帮毕业的mm收拾寝室,给mm拍傻傻的学士服照片……12号早晨送走了mm,一个人去淘宝报道。没想到第一天报道也是一番纠结,首先是华数淘宝正式从淘宝剥离,从文二路淘宝公司内部搬到了紫荆花路府苑新村,然后我放下自行车导了三辆公交才到华数淘宝。第一天工作很简单,让我在windows上配置个trac,看看nginx服务器。都是从未听说过的东西。

我的理解,trac是个python语言写的svn前端+wiki的集合体,著名的c++ boost库用的就是trac,ruby也有类似的东西,叫redmine,当然,我对ruby一无所知,对python也仅仅是看过《Learning Python》的前两章,还出于ym的阶段。安装参考这篇How To Install Trac on Windows,其中有几个链接已经过时,需要自己手工下载安装。安装的过程还算顺利——比安装gentoo顺利多了。不过还是挺麻烦的——如果在linux下,一两条命令应该就可以了,也不用“鼠标点击——next——install“。

nginx是轻量级的http服务器,其功能或许不如apache全,但是性能却比apache强很多,尤其是在flv视频支持方面,其原理大概在于nginx针对不同的平台编码采用了不同的I/O模型。nginx的代码不算长,大概10w行左右,用c写成,所有的东西甚至包括./configure脚本都是作者手工写成,是一个锻炼阅读源码的好项目。国内的血多视频网站如youku、tudoo等后台服务器都是nginx。

第二天我就参加了小组会议,头儿给我讲了整个项目的架构和周期,听的我非常兴奋。大体思路就是我们要搭成一个全新的视频点播平台,做成中国的itunes app store。整个一周我都在了解各方面的信息,也对taobao这样的互联网公司有了进一步的了解。网上浏览的时候接触了很多“牛“的资源:

这些实际的项目、经验、团队、感想,感觉就在自己的身边,让我兴奋不已。阿里巴巴,马云,中国能有这样的企业,我觉得这是中国的未来。Open Source Never Die。

除了完成头给定的任务,我在网上快速的学习一些科普知识,各个方面的都有,很多东西扫一眼百度百科也比毫不了解要强,这些入门知识包括:

 吓到了吧?其实很多我都不会。我现在出于“我不知道我不知道“到“我知道我不知道“这样一个转变的过程。下一个目标是:“我知道我知道”。

除此之外,每个桌上那一抹绿色,厕所里的“蹲位以待“,中午和老总一起吃饭的气氛,自由宽松的工作环境时间,这些都是我喜欢的。不过日子久了,每天面对着电脑,看着一行行的字母滚动而过,不免麻木。每天晚上出了公司,抬头看看杭州最近让人淡定不能的天空,心里总有一些别样的悸动。

“我一个人吃饭、旅行,到处走走停停;也一个人看书、写信,自己对话谈心”,mm在上海入职培训,无暇顾我,我也就不再好意思打扰她。我告诫自己要忍让要懂得理解,千万不要因为这样的事情跟mm生气,如果连这点小事都忍受不了,以后又该如何支持mm的工作?我这样自我安慰,mm却不太理解,怪我对她的事情逐渐冷漠,搞得我伤心不已。

“你喜欢这个啊,你喜欢玩所有的毛绒玩具,你喜欢妈妈,喜欢爸爸,喜欢你的小睡衣。你什么都喜欢,是不是?知道吗?等你长大了,曾经喜欢的东西也许会变得不 再特别,就像这个玩偶盒,你会发现那只是一片铁皮加一个人偶,那些原本钟爱的东西会渐渐被你遗忘,到了我这个年纪,钟爱的东西也许只剩下一两件了,对我来 说只剩一件了。”《拆弹部队》,James对他的女儿说完这些,又独自回到了战场。

我这个人是个有点“无趣”的人,我不喜欢电脑游戏,什么dota、星际,我觉得要学会这些比修一门电路原理还难;我也不喜欢追星,我觉得谁当选了世界足球先生谁谁拿了NBA总冠军与我没啥关系,听说世界杯决赛在夜里两点,设了一点的闹钟,结果闹钟响了我按了继续睡……;我觉得一大群人去KTV去杀人游戏玩三国杀绝大多数时间也是纯属无聊找点消遣,阿桑还说:“孤单是一个人的狂欢,狂欢是一群人的狂欢”;我在校内上很低调,因为我觉得那里很浮躁,每天去看看无非就是了解下朋友的动向;所谓朋友,多数时候只是在特定的时间特定的地点和特定的环境下的朋友,到了人生关口,大家各奔东西,所谓友情也被岁月冲淡,我觉得真正的朋友不需要经常的联系来保持朋友关系,但现实中大多数的朋友需要经常联系保持这种朋友关系,这或许就是贺岁短信的终极目的吧。

所以说人生得一知己死而无憾。“什么?你了解我?笑话,我自己都不了解我,你会了解我?”

每个人都是孤独的行者。

人生在世,所谓何求?

所谓成长,就是信仰一个个崩塌的过程?

当有人要教育你的时候,你一定要提高警惕!

我们的教科书告诉我们要正视历史、以史为镜,可是广电却封杀了《活着》、封杀了《蓝风筝》、封杀了《颐和园》,这就是所谓“以史为镜”?

我们的社会主义赋予人所谓言论自由集会自由,同时我们的社会主义也用GFW提前给我们确定了考试范围和作文题目——我不要这种阉割的自由,我是个成年人,你凭啥单方面的决定哪些东西我该看哪些东西我不该看?

我们的党告诉我们只有共产党才能就中国,国民党的老巢台湾也没比大陆差到那里,真是一句屁话,我认为大学生盲目入党是中国当代大学生最大的悲哀。

其实有时想想,我们到底有没有必要那么执着?我们执着的入党出国学习深造进入名企做什么电子商务网游平台SNS,可是我们的国民却有很多人上不起学吃不起饭不知道电脑为何物。

欲望是痛苦之源。

我最近关注豆瓣上一个同城的活动:我们一起去流浪动物救助基地做义工吧,看了土豆网上一个视频,我开始思考佛教,审视素食主义。我想去基地做些事情,可是两次都睡过了。我开始思考李连杰,重温他的《霍元甲》;我看了《甘地传》,思考着爱因斯坦的那句话:“后代子孙将无法相信,世上曾活生生的出现过这号人物”;我想到了感动中国颁奖台上徐本禹滚滚而下的两行泪水;我想到了丛飞之死;我想到我的朋友db,放弃了学业,“抛弃了一切”,去做他“想做的事情”:

我想到了陆川的《可可西里》;我想到了雀儿山口常年护路的道班战士,想到了青海湖边那个没有电的小镇。

没有什么能够阻挡,你对自由的向往

天马行空的生涯,你的心了无牵挂

穿过幽暗的岁月,也曾感到彷徨

当你低头的瞬间

才发现脚下的路

心中那自由的世界

如此的清澈高远

2008.5 青海湖

2008.8 四川甘孜

请叫我们:行者。




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee