又一年。
不同的是……今年没有我了。我试图同步做题来增加一些参与感。09 年结束的晚上,我和李嘉琦走在看台后面的小路上,心里满满的是高兴。10 年,陪着烧碱吃泡面,不知道该说点儿啥来安慰他。而后,又成了我独自在机房,心里不是滋味。
高三的两个人到了需要 RP 的时候,情况似乎和去年有些相同。
「在这里,再祝你们两个好运。好运。好运。」这句话就原样抄来吧。真心祝福你们。
我和 33 的小算盘:)
又一年。
不同的是……今年没有我了。我试图同步做题来增加一些参与感。09 年结束的晚上,我和李嘉琦走在看台后面的小路上,心里满满的是高兴。10 年,陪着烧碱吃泡面,不知道该说点儿啥来安慰他。而后,又成了我独自在机房,心里不是滋味。
高三的两个人到了需要 RP 的时候,情况似乎和去年有些相同。
「在这里,再祝你们两个好运。好运。好运。」这句话就原样抄来吧。真心祝福你们。
我和 33 的小算盘:)
三点多就惊醒,然后小腿肌肉感觉特别不对。就再没睡着。没有任何压力,怎么这么忐忑?
没有要到大面包,又是一辆一辆出租车过去。十九中学。路上看看我的右边,“今天的太阳怎么跟去年的一模一样…”一个橙色的小橘子。
RP++,送去我最好的祝福。显然觉没睡足,很困。发挥就那么回事,反正我也不求什么。
考前你拍我了一下,我感动了半天…
左边是两个刘子渊。一块儿没给出去的 RP 就给了你。
考完就回来了。又打到一辆不认道儿的出租车,一如既往的慢。又一年 NOIP 就这么结束。
现在都不知道自己是什么感觉。我只知道我今天接到你的电话了。平生第二次。
下午一直无助地在机房不知道该做什么。也许,是到了结束的时候了,可是可能我就是那种所谓的不管加分不加分都会向前走的人,对 OI 充满了真心的爱的人。
甭管北大夏令营遗憾地差了几分,还是 NOI 拿着个夏令营铜牌回来,都没什么好伤心。
我此刻在为你们所有人祈祷,不过权值不太一样。如果我只得 100 多分儿,我会高兴得兔子一样。
曹珊的成绩首先到了。210。特别想恭喜你。吃过饭回来,“马老师在上面等你们呢”。我们赶紧上去。“唉,胡颖健”,强哥拍拍他的背。我马上意识到完了。果真。
我的发挥还是那么稳定,该得的分一分没丢,人品真的没给出去?我特别庆幸我不是 280…跟去年太相似会让人有不好的联想。
机房的空气几近凝结,我渐渐无法呼吸。什么话都显得无力了。慢慢地把泡面吞下,陪你回趟班,说些无关痛痒的话。
在此,胡颖健,我要和你说声对不起。你不需要知道原因。
另外放心,两个 210 都能过。
晚上。我得知我的认真认真地被一堵叫做认真的墙挡在了外面。大脑有些承受不住,几乎栈溢出。
本来想多睡会儿,可是习惯了。6:30 就突然坐起来。
我的 OI 生涯就这么和另一条线错综复杂地交织在一起了,结束于一道难度为“别碰”的图论题。
时间还在流动。以后会怎样以后就知道了。
今天纠结于 swap 要显式地写出来还是写成函数。写成函数绝对要优美的多。
int main() { int i; int a = 1, b = 2, tmp; for(i = 1; i <= 100000000; i++) { tmp = a; a = b; b = tmp; } return 0; }
~~~ 一条分隔线 ~~~
void swap(int *a, int *b) { int tmp; tmp = *a; *a = *b; *b = tmp; } int main() { int i; int a = 1, b = 2; for(i = 1; i <= 100000000; i++) { swap(&a, &b); } return 0; }
显式的 swap 一次要 0.0000000035 秒。
函数的 swap 一次要 0.0000000057 秒。
我还试了一下 C++ 的 inline,发现没有速度的提升。
结论:用函数的 swap。这点速度损失没啥,然而一堆显式的 swap 不仅容易出错还极其影响心情。
就是拿着笔,放在纸上不抬起来,画出一些有意思的图形。
但是一般没有这么爽……一般是给你一幅图,让你一笔画出来。这也叫欧拉路径。
说起来特别简单。先找一个连接了奇数个点的点作为起点,把笔放下去。然后开始画,随便画。尾巴死了就从头接着画。OK,成功了。
如果所有点都连接到偶数个节点,很好,画到最后又回到了起点。
NOI 这家伙对我来说有着无穷的吸引力。而今年我唯一能去NOI的机会。所以我必须要进入北京代表队。
我现在的水平在 NOIP 可以说是游刃有余,但拿到 NOI 难度的题目,往往是连想法都没有。所以在关键的3月和4月中,需要质的飞跃。3月需要整体提高水平,主要是通过刷完 USACO。4月我想做一些成套的题目。
完成计划的最好方法就是把她公开。好吧,我十分希望我能完成计划。于是我就把计划从紫皮本(08年忙机器人竞赛那会张镐薪传下来的。。。)搬到 Blog 上面,起到督促自己的作用。
2月10日-2月24日 准备 CCC 比赛。
2月25日-3月20日 USACO 通关(每天3道题左右)。
3月20日前 熟练掌握 GNU Emacs。
嗯。最近尽量减少各种娱乐活动。这不是 NOIP,所以也不能像准备 NOIP 一样欢乐和轻松。另外5月份我是不是找老魏商量商量逃课备战?
/* 本来准备的红警3系列文章因为贯彻落实减少娱乐活动的方针取消了,请见谅。 */
/* 5月17日的 blog post 会是喜还是忧? */
在那个欢乐又恐怖的冬令营中,我见到了张放、范浩强等牛。那真是让人只剩下佩服的份了。
冬令营有两试。一试我由于经验不足+时间分配不合理+RP爆差,只得了30分。二试我在刷完第一道背包的水题后,全力刷第三道。在只剩半小时的时候,还没有看到任何希望。我以为我的二试就这样挂了。可我最终还是调出来了——还剩20多分钟。然后是全速Rush第二题。最终得分是180(100+0+80,最后20分钟彪出的程序没有得分),我很欣慰,因为我的努力没有白费,第三题很给我面子。最终排在第6。
于是现在就面临一个扎手(……棘手)的决定。我要全力进北京队吗?如果真的进去了,我在NOI的竞争力将会如何?虚心地说,就现在的实力而言,还很欠缺。浅思欠虑后,我决定拼一把了。我这是最后一次去NOI的机会(虽然也是第一次)。
每个人的高中阶段只有一回,平平淡淡固然是一种选择,但却不是我想选择的。
最为空虚的最后一天下午,我逃出了“教学演示”的魔爪,在看“Revolution OS”。
/* 从上周五到本周三,我一直处于生病阶段,头脑比较不清晰。每天大约要睡15个小时。 */
今天偶然看到一个很巧的查找技巧,跟大家分享一下。
假设有一个数组a,要找到一个n使a[n]=key。
很简单吧,先看看一般的方法:
for(i = 1; i <= a.length; i++) if(a[i] == key) break; // now a[i] = key, i > a.length means not found.
看看很巧的用哨兵的方法:
a[0] = key; for(i = a.length; ; i--) if(a[i] == key) break; // now a[i] = key, i = 0 means not found.
这样加上一个小小的哨兵(a[0])就节省了大约一半的时间!其实挺实用的。
这是一个在线评测系统,目前也就是个看题系统,尚处于不能用阶段。
看看:http://www.shiyihcc.com/xhacker/NDSOJ/
项目页面:http://code.google.com/p/ndsoj-online-judge/(哈哈,还很空洞)
今年备战NOIP的日子里,Vijos常处于挂掉的状态。不是被黑客弄死了,就是遇到雪灾,总之是十分杯具。于是在一个无聊的上午(经查证为11月14日),我打开了一个无聊的Gedit,吓唬人似的写了一个页面——index.php。没有一丝设计,上面的标题是Gedit里面的一个配色(叫什么我忘了),下面的每一个box都是朴素的灰色。我只是无聊,只是恶搞。可是过了一会,我突然发现这是个好的想法。为什么我们自己就不能弄一个评测系统呢?于是杯具了。其实想法是好的,可是我认为在备战的时候有这个想法是错误的——它浪费(可能也不能叫浪费)了我太多的时间。看看这里吧,我14日到17日一直在努力改善它。要知道这可是……竞赛前最紧张的几天啊。所幸之后我清醒了一点。
但总之有一点不容置疑,那几天的努力已经让NDSOJ成为了一个可用的“看题”平台了。不过,最重要的“评测”部分现在还没有。不过,面包总会有的,只是时间问题。我已经决定把NDSOJ做下去了。
于是,今年之内除了评测的部分外应该是都能完工,寒假完事后全面OK。接下来的一段时间,它将作为十一学校的御用评测系统。直到我们有更多的服务器和评测机。之后就是对外开放。
那么,说来说去,这个OJ和别的有什么不一样呢?其实,我是想做一个“Online judge for human beings”。从界面就可以看出来,虽然丝毫没有经过设计,但它绝对是比其他的评测系统要方便的。在提交方式上,采用了文件提交的方法,也是为了最大限度的方便大家的操作。输入输出采用文件输入输出。另外,我们想把通过率这个东西去掉,还有就是开放数据。最后,这个评测系统是开放源代码的,你去Google Code就可以全部clone下来。
……说了半天,也有可能是空话,就看我是三分钟热度,还是真要做这么一个东西吧。不过有一点可以肯定,如果(注意,是如果)做出来了,那一定是中国最好的评测系统,没有之一。
44天的集训在今天宣告结束。
一进八十中的教学楼,一股牛味扑面而来,熙熙攘攘的就是参加NOIP的各种牛。我们在414教室。
八十中的考试环境还可以,机子速度也还算挺快(256MB内存)。用的是NOI Linux,上面有Vim/Emacs,可惜我都不会用,眼睁睁瞧着世界上最好的两个编辑器叹息(有时间一定要征服一个)。我只会用朴素的Gedit,上面有我喜欢的Oblivion配色。于是,就他了,GUIDE滚一边去。考题加密压缩在一个包里,许多人解不开,于是我unzip xxx.zip,然后输密码,pdf就出来了。周围的还都在忙活呢。
适应适应很令我无奈的软趴趴的键盘,我就开始写程序了。第一道水题刷完后一个小时已经过去。第二道完事后还剩一小时二十分钟。看看第三题和第四题,第三题看起来是一道图论的,第四题是数独(于是我的第一反应,“深搜”!)。于是想都不用想,先做掉第四题再说。果然深搜,做完后还剩20分钟。这是传来了悦耳的声音:“延长20分钟。”我有点激动了,于是先出去上了趟厕所,权当是清醒一下头脑。然后,开始考虑第三题。看了一会,发现是传说中的Floyd。于是开刷。不过由于数据较变态,这题看来只能得最多撑死40分了(我用的邻接矩阵)。
考完后,我们一聊起来,发现今年没考动态规划。一想,确实没考,真实神奇。就在昨天晚上,孙韵佳(女,高三大牛,去年一等奖)还在跟我说:“动态规划学好了,NOIP就不惧了。”我一直也是这么想的。
总的来说,这回考的虽然不能说十分满意,但至少我觉得发挥了水平,没有特别遗憾的地方。我知足了。
关于分数,我估计最多280/400,大概也就250左右(没准更糟糕)。不过总之,大约20分钟之后就知道了。那是的心情会是高兴?还是?不过,管他呢,反正我算是考完了。
不管这回结果怎样,我已经和喷壶(胡颖健)说好了,以后每周日刷USACO,争取早日通关。另外,接下来的时间里,我还将致力于NDSOJ的开发(这个……我可能过几天会发篇post详细介绍一下)。
另外昨天有人想看NOI Linux的模样,那就发一下吧。个人十分鄙视NOI Linux,它让许许多多参加OI的同学对Linux产生了极其不良的第一印象,而这些人最可能成为中国计算机行业未来的牛人。顺便再发两张Chrome OS的截图(第二张是Google放出的)。





最后,我要做的是感谢。首先感谢马强老师,还有一起集训的十几个弟兄。另外,就是陪伴我44天的Ubuntu、Gedit、Geany……为了报答Geany这个优秀的IDE,你们在Geany和Geany-plugins的下个版本就能看到完美的中文翻译了。
最后发几张原来的照片,回味整个NOIP 2009。
下周一回去上课了。