Dvorak Layout

注意:这篇文章使用QWERTY键盘使用QWERTY布局写的。

今天欢乐的一天,我也想趁这一天空虚空虚。上午做了一些有趣的事情,然后就到了中午。中午饭是个问题。我把一大堆乱七八糟的菜、两块骨头、一个驴肉火烧、方便面调料、面饼、一勺虾皮一起放到了一个小锅里煮,然后定了一个8分钟的闹铃。就这样,我的中午饭极其充实。

这么一下就到了下午。没什么有意思的事情了,我准备试试传说中的Dvorak Layout。在两个多小时的魔鬼训练后,感觉还不错。最令我感到惊讶(这种感觉真的很好)的是,在GCompris里的打字游戏中的单词有许多许多都能直接在中间一行输出来,爽爆了我。这个布局说起来还是很神奇的,敲我的密码也比快蹄方便。另外我几乎毁了一个键盘。我试图把笔记本的键帽拆下来换位置,可是再装上是它就罢工了,你要使劲按下去,然后还不一定有反应。……在我能以QWERTY一半的速度输入密码后,我放弃了这个不错的布局。主要原因是快捷键。复制要按Ctrl+C,而不是Ctrl+J;粘贴竟然要按Ctrl+V,而不是K(刚才的K险些没打出来,这个键确实不好使了)。这令我非常恼火。算了,何必跟一个小小的键盘布局较劲,我放弃了。噢,忘记说了,用Dvorak写程序的感觉真的不错,只是编辑器的快捷键……全都不干活了。

不过Dvorak兄你完全不必伤心,过几年在我有一个稳定的工作环境(即长时间只使用一台电脑)时,我一定会把你再捡起来的。因为我没有忘记你能仅仅用中间行打出包括“int”在内的很多东西。

介绍NDSOJ

这是一个在线评测系统,目前也就是个看题系统,尚处于不能用阶段。
看看: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.

44天的集训在今天宣告结束。

在路上。

在路上。

咱学校参加NOIP的队伍,最左边是强哥。

咱学校参加NOIP的队伍,最左边是强哥。

一进八十中的教学楼,一股牛味扑面而来,熙熙攘攘的就是参加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放出的)。

NOI_Linux_boot
NOI_Linux_login
NOI_Linux_Guide
chromeos_login
Chrome_OS_screenshot
最后,我要做的是感谢。首先感谢马强老师,还有一起集训的十几个弟兄。另外,就是陪伴我44天的Ubuntu、Gedit、Geany……为了报答Geany这个优秀的IDE,你们在Geany和Geany-plugins的下个版本就能看到完美的中文翻译了。

最后发几张原来的照片,回味整个NOIP 2009。

照片_100909_002
照片_101709_002
照片_101309_001
照片_110409_001
照片_111309_001


下周一回去上课了。

43/44, 最后一天。

44天的集训已经接近尾声,明天就是考验我们的时候了。上午8:30-11:30做四道题,然后,下午3点就能出成绩。这就是信息学竞赛的强大之处——上午的竞赛,下午出成绩。

今年的NOIP似乎有许多变化。系统改用NOI Linux。一个基于Ubuntu 7.10的残废系统。7.10古老的内核导致NOI Linux十分不易在电脑上安装。用了一个糙到极致的Mac主题,其他主题都被删了。另一个变故,由于北京初赛有所谓的“缺考”,减少了5个名额。然而这还不是真正的噩梦。今年的一等奖分配有了变化,北京只分到了17个,减去5个,只剩12个……要知道去年是30+。
于是不得不变化策略。本来准备AC两道题,再骗点分搞定,现在则必须在另外两道题上下功夫了。不过,不论一等奖如何分配,自己的发挥是最重要的。所以,不管水平如何,名额怎样,我们都要满怀信心地进机房,我们都要确保简单的题AC——这样,无论如何不会留下遗憾。

明天下午,游戏结果就将揭晓。无论如何,我已经对09年12月 – 10年11月有了个计划。明天再写吧。

36/44, 这还有一周了

今天是周五,明天是周六。我们的时间还剩下一周。

过去的一周,参加了若干模拟赛。虽然仍然极度受虐,但已经较一个月前的两位数分增加到三位数了(破百)。

这周高三的几个人加入集训,看到他们在刷USACO,谈论着1.2、1.3,我乐了。咱可是刷到2.4的人啊!刷USACO的那段时间,我还真是收获不小。不过,我不打算再往后刷了。这剩下的一周,看看一些常用的算法,做做经典的题,嗯。然后,坦然地面对复赛。

另:与OIer们分享一句话:“骗分的最高境界就是不骗分。”(来源:我是智障写的《骗分导论》,今天空虚时看了一下)

33/44, 介绍DSL和Kubla

今天我写了一个用SPFA求最短路的小程序,Penhu同学想让我给他一个伪代码,于是我写了一个”SPFA.wdm”。为了有意思起见,我煞有其事地创造了一种完整的程序设计语言。因为wdm没有实际意义,因此改名DSL(Damn Simple Language)。写完后,Gedit自作聪明地用VHDL的语法给程序染了色,还真像那么回事。实际上,后来发现VHDL和DSL的相似度并不高,只是凑巧罢了。

Penhu同学在看到DSL后,灵感一现写出了Kubla语言的SPFA。一点很贱的是,Kubla内置的算法库里内置SPFA方法。不过,还是挺王道的,到头下来程序只有6行。分号后面是单行注释,叹号中间是多行注释。

!	SPFA, in kubla language.
	Kubia, next generation language designed by Penhu201.
	SPFA, a alg to solve SSSP problem. !
(alg) ;包含一个库:alg(常见的算法)
|\n/| ;输入n
|\|\graph/|/| ;两个输入符号,代表输入二维数组graph
 
d[n] <- alg`SPFA . graph . 1 . i, 2 -- n
;调用alg库的SPFA方法,传三个参数,句号作为间隔。返回值赋给d数组。
i, 1 -- n : 1 ;循环,从1到n,循环变量为i,间隔1
	|/"To $i: $d[i]"\| ;输出
-- SPFA, in DSL(Damn simple language).
-- DSL, a missing programming language designed by Xhacker Liu.
-- SPFA, a alg to solve SSSP problem.
 
inc io, ds
 
io.fopen("Graph.in") -> fin
io.input(fin, "%d") -> nodes
ds.graph.matrix.input(fin) -> graph
d[1, 2 to 10] <- 0, INFINITY
 
ds.queue.init() -> queue
ds.queue.in(queue, 1)
while ~ds.queue.empty(queue)
	n <- ds.queue.out(queue)
	loop i; 1 to nodes; 1
		if d[n] + graph[n][i] < d[i]
			d[n] + graph[n][i] -> d[i]
			ds.queue.in(queue, i)
 
loop i; 2 to nodes; 1
	io.output(stdout, "To $i: $d[i]")

备注:以上染色仅供参考。Kubla是用C的语法染的色,DSL使用VHDL。