今天才看到的,VLC戴上了一个可爱的圣诞帽子。
VLC的复活节彩蛋
December 26th, 200911年。
December 26th, 2009谢绝评论。
感动十一那些事儿
December 16th, 20092007、2008、2009,今年是第三次感动十一网上投票。
回忆前年,我和王怀橘(桔?橙?)找到塔爷。塔爷说,十佳投票的程序改成感动十一吧,就改改颜色就行了。很天真地接下了这个任务,发现里面充斥着看不懂的ASP。于是图书馆借了一本书,竟然在一周之内连学带改把感动十一2007上线了。十佳蓝色的theme变成了Ubuntu的三种颜色,配起来只能说还不错。现在想起当年看到多少不知道啥意思的代码,摸索着竟然就能用了,神奇。
我还记起了猩那激情的暴力测试。
想起去年,咱准备充分。那时正在学习php中。于是我在感动十一开始一个月前准备把它port到php(把所有HCC程序port到php是用Linux作服务器的第一步:),我当年就有这个想法)。时间充分,可以慢慢来。但EMAP不干。EMAP改了时间,我再次像07年一样紧张。不过终究还是完成了。
猩又帮我暴力测试。
07、08年都是赶出的程序,今年才是真的不着急。看着猥琐的代码,心情实在是不好。话说十佳投票的程序就写的很糙(塔爷别跟我急,这是事实……),让一个初学者改成了感动十一。08年又极其暴力地把asp直接翻译成php,埋下了祸根。看着垃圾代码,没有什么心情把它改好。于是修了几个sql注入的漏洞,改改css(换了个配色),和王怀橘一块作了几个新图,完事了。
得出一个结论:第一遍写就要尽量写得完美。在NDSOJ我准备这样做,免得以后自己没有心情看自己写的东西。
最后,欢迎前去参观指导:http://www.shiyihcc.com/gandong/2009
NDSOJ一个月大了
December 12th, 2009这个项目,至少到现在还是很活跃的:),平均每天能commit差不多一次。这个在NOIP复赛前诞生的想法,现在已经有一点成熟的感觉了。体验到这里。
这一个月来在11月14日的雏形的基础上新增了这些功能:
- 用户登录(11月15日)
- 题目浏览(11月15日)
- 屏蔽IE(11月16日)
- ……这周忍住了,没有commit。不要误了竞赛啊,那可得不偿失。
- 题目搜索(11月24日)
- 界面大调整,这才像个样子(11月29日)
- 更换配色方案(11月29日)
- favicon(12月8日) -> 只是暂时的,将来还要换一个……
顺便发布一下现在定下的时间表:
- ~2010.1.END 可以提交程序。
- ~2010.2.END 完成本地评测系统。
- ~2010.3.END 完成评测系统(包括评测机与服务器的通信)。
- ~2010.4.END 开始小规模测试
- ~2010.5.END 筹备服务器及评测机、注册域名
- ~2010.7.END 对外开放
关于评测系统,通过这几个星期对一些OJ的分析和看书,现在已经有些想法了。
另外,界面上,大家可以提提建议。想要达到的目标是:符合标准、简洁大气、清晰易用、无视IE。
用Paw++看NOIP2009
December 6th, 2009昨天了解到一个极其NB的软件叫做Paw++(全称是Physics Analysis Workstation,详见http://en.wikipedia.org/wiki/Physics_Analysis_Workstation 和 http://wwwasd.web.cern.ch/wwwasd/paw/)。这是CERN从1986年开始开发的一个超强的统计、绘图软件。昨天在Ubuntu软件中心看到了它,还是GPL的,记得原来我爸也用过,于是将它安上试试。
需要找一些数据来做实验,于是选取了NOIP2009的得分情况(这个东西是高能物理用的,干这个有点大材小用:) )。Paw有一个自己的脚本语言,十分简单。记得处理数据的命令好像是NTUPLE,于是先
help nt
为什么不是help NTUPLE?因为paw很强的一点就是如果没有歧义,只要输入命令的前几个字母就OK了。
然后Paw弹出一个小窗口写出了NTUPLE的命令列表。
我们还是先获得数据吧。先上 http://www.student.gov.cn/bjnoi/tzgg/269720.shtml 把那个成绩表粘到 OpenOffice.org 电子表格 中,然后去掉表头、姓名一栏和变动原因一栏,编号一栏去掉“BJ-”,只保留编号数字。然后把这个ods导出成csv,命名为NOIP.csv放在家目录下面。
然后转到Paw,输入nt/cr 10 NOIP 6 ! ! id tmark son trade spy sudoku,nt/cr是NTUPLE/CREATE的简写,要是不太明白可以看看help nt/cr。接下来nt/read 10 NOIP.csv,程序返回223 events have been read,然后nt/scan 10,bingo!数据已经全部输进来了。接下来就是画图了。
开始画图。先nt/pl 10.tmark。得0分的确实不少啊!
这时我们想看看总分和sudoku一题得分是否有很大相关,输入nt/pl 10.tmark%sudoku。Paw输出了一个散点图。我们再用hi/pl 1000000(1000000是系统分配的图的编号)详细看一下。顺便试一下hi/pl 1000000 box、hi/pl 1000000 lego和hi/pl 1000000 surf。
通过这几幅图,我们可以看出,sudoku和tmark数独一题是得到高分的钥匙。
如果有兴趣,可以再看看tmark vs. spy,可以看出,spy得到90或100的人才有可能得高分。还可以再乱看看其他好玩的图形。
哈哈,玩完了,不错吧。Paw++就是这么个强悍的东西,今天主要是玩玩,可能连它1/100的功能都没有用上。追求更加强大功能的朋友可以看看同是欧核中心出的叫做ROOT的软件,也可以在Ubuntu的源里面找到。它是用来替代Paw的,功能更强,使用C/C++语法,我大概看了一下,使用起来比Paw稍微复杂一些。
最后说一声,这个东西似乎只有Linux版。
查找时的哨兵
December 1st, 2009今天偶然看到一个很巧的查找技巧,跟大家分享一下。
假设有一个数组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])就节省了大约一半的时间!其实挺实用的。
Dvorak Layout
November 22nd, 2009注意:这篇文章使用QWERTY键盘使用QWERTY布局写的。
今天欢乐的一天,我也想趁这一天空虚空虚。上午做了一些有趣的事情,然后就到了中午。中午饭是个问题。我把一大堆乱七八糟的菜、两块骨头、一个驴肉火烧、方便面调料、面饼、一勺虾皮一起放到了一个小锅里煮,然后定了一个8分钟的闹铃。就这样,我的中午饭极其充实。
这么一下就到了下午。没什么有意思的事情了,我准备试试传说中的Dvorak Layout。在两个多小时的魔鬼训练后,感觉还不错。最令我感到惊讶(这种感觉真的很好)的是,在GCompris里的打字游戏中的单词有许多许多都能直接在中间一行输出来,爽爆了我。这个布局说起来还是很神奇的,敲我的密码也比快蹄方便。另外我几乎毁了一个键盘。我试图把笔记本的键帽拆下来换位置,可是再装上是它就罢工了,你要使劲按下去,然后还不一定有反应。……在我能以QWERTY一半的速度输入密码后,我放弃了这个不错的布局。主要原因是快捷键。复制要按Ctrl+C,而不是Ctrl+J;粘贴竟然要按Ctrl+V,而不是K(刚才的K险些没打出来,这个键确实不好使了)。这令我非常恼火。算了,何必跟一个小小的键盘布局较劲,我放弃了。噢,忘记说了,用Dvorak写程序的感觉真的不错,只是编辑器的快捷键……全都不干活了。
不过Dvorak兄你完全不必伤心,过几年在我有一个稳定的工作环境(即长时间只使用一台电脑)时,我一定会把你再捡起来的。因为我没有忘记你能仅仅用中间行打出包括“int”在内的很多东西。
介绍NDSOJ
November 22nd, 2009这是一个在线评测系统,目前也就是个看题系统,尚处于不能用阶段。
看看: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/44 = 1.
November 21st, 200944天的集训在今天宣告结束。
一进八十中的教学楼,一股牛味扑面而来,熙熙攘攘的就是参加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。
下周一回去上课了。























