8 g6 i: k7 z; _/ c' Q(1) 在1小时15分钟的短时间内挑战3道题。 " k* A" O% ]8 w 0 b! x( Y/ x$ k1 t9 q% S5 R1 l(2) 提交的结果在比赛结束前是不知道的,整个过程中稍有失误,就会变成0分。2 {1 x0 U+ o2 o. A; R/ M
. o4 B1 W- r l4 u0 F0 t- ?(3) 在编码阶段(coding phase)结束后,还有一个挑战阶段(challege phase)。该阶段可以查找别人代码中的漏洞。如果能够提供一组输入数据,使别人的程序返回错误的结果,就能得到额外的分数。 6 T5 O9 x% [2 P& _3 c7 _, O/ r; u/ s 9 M5 H+ a' h3 n M4 O其中第3条是该赛事独一无二的特点 ,也是阅读别人代码的好机会。TopCoder还有一个深受大家喜欢的等级分系统(rating system),它会依据SRM的结果给参赛选手排名。另外,TopCoder还会举办一年一度的TCO(TopCoder Open)公开赛。一旦从在线进行的几轮预选中胜出,就能够参加在拉斯维加斯 举办的总决赛。5 K) m/ f! Y* i, c+ j% a
# S0 Y+ }3 c( g F5 c历史最悠久的竞赛——ACM-ICPC4 d' f u' i f b1 u7 C m
! p$ Z1 }8 P8 U' l/ F2 P% ^
ACM-ICPC是由美国计算机协会(ACM)主办的、面向大学生的竞赛,也是历史最悠久的程序设计竞赛。这是一个三人一队的团队比赛,选手要在5个小时内解决大约10道题。因为比赛中三名选手共用一台电脑,题量又比其他赛事多,并且多是一些实现复杂的问题,所以团队配合显得异常重要。想要从日本参加该项赛事,首先要参加在线进行的国内预选赛,胜出后才能参加亚洲区域赛,取得前几名的好成绩后才能够参加世界总决赛。8 N8 o/ e/ B* x! ]2 p) W8 j0 e8 G
* b5 I4 V+ o6 ?, V" e讲到ACM-ICPC,不得不提到我们的《挑战程序设计竞赛》(第2版)译者,这颗闪耀在编程竞赛中的明星巫泽俊,就在2011年的5月30下午2时,他获得了第35届ACM国际大学生程序设计竞赛全球总决赛冠军,媒体称他为“世界最聪明的人”。(见下图) + m) M; o& U: Q8 [- w s$ S# Z- g+ {& r& L; c + z6 f S8 L$ R5 p1 C: a1 q
t+ B6 r3 h1 Y$ Q2 \) q7 S! V : f8 B3 E' @9 F* N& g$ m" j8 _% o; _/ T3 V( E
巫泽俊平时训练的实验室8 Q8 ~- j7 Q( ^
0 ~ w& ~7 d: B8 w: I! \ ) u) ]# H7 p3 C- M0 J. ~
; y2 m% O% N3 \3 ?' c3 g巫泽俊$ N, G s5 }8 [# ~7 u- h0 g
& w, k3 O4 X Z1 y' X* a面向中学生的信息学奥林匹克竞赛——JOI-IOI; @- b' B3 h0 P: S
6 Q. l7 j) O' O( P9 M
信息学奥林匹克竞赛是学科奥林匹克竞赛的一种,是以初中生和高中生为参赛对象的程序设计竞赛。在日本,首先要参加日本信息学奥林匹克竞赛,取得优异成绩后,才能作为日本国家队选手参加国际信息学奥林匹克竞赛。 其他比赛都需要尽可能快地解决尽可能多的问题,而信息学奥林匹克竞赛只要在规定时间内求解问题即可,成绩与所用时间无关,但是它相对其他比赛而言,求解每道题所花的时间要长得多。虽然是面向中学生的比赛,每年所出问题的难度却是非常高的。# ]+ A6 I6 v% n& e7 D" d
6 d" [6 L: V7 `9 l! l通过网络自动评测——Online Judge(OJ) # }# r1 J2 v( T; v0 {0 s9 w0 o6 B$ W+ {3 N Y, l7 q
在互联网上,有一些被称为Online Judge的系统,它们能够自动评测以往程序设计竞赛中的题目。利用该系统就可以练习了。另外,其中一些Online Judge也会定期举办自己的比赛,不妨去参加一下。在此列举几个有名的Online Judge。+ q2 Q) P ~8 O2 d. l: p
6 Z7 |5 N: ^& l/ r
PKU Online Judge (POJ)—— 题库中有大量的题目。+ [. {. F' h4 F3 S' V; q
会津大学Online Judge(AOJ)—— 还包含日语题。( [* Y0 |. e: B( z! N, J7 l
Sphere Online Judge(SPOJ)—— 允许使用各种各样的编程语言。% ]1 ?: |' R' X% g/ U
SGU Online Contester—— 具有模拟参加历史比赛的虚拟赛功能。6 }% G6 ?& M) |8 H* Y; p z
UVa Online Judge—— 老字号Online Judge,经常举办比赛。3 Z1 i. P$ e% ^" D' f
Codecorces—— 与TopCoder一样定期举办比赛,又同其他网站一样不断维护历届题库。2 j2 G B8 r. I2 x
关于本书 x7 M3 C6 _. D
7 [3 G* n; E' b 5 b! ]: u6 q& A$ U; ^2 }, C4 e) d' b. |& m$ ]' m/ @- i5 T4 I
《挑战程序设计竞赛(第2版)》分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由易及难的细致讲解,每章后附有习题。 通过本书不仅可以学到算法,更能学到其设计和运用的思想。 ! e) v* r5 E) T9 X0 ]" [8 A6 b7 B. _" j3 a
只要是具有编程基础知识的读者,均适合阅读本书。书中的源代码均用C++实现,不过只用到了其基本功能,所以即便读者不熟悉C++也不影响阅读。 ' F: `: ?, M" ~0 p8 T! D, r% }$ O% l( n. C/ b
本书的第一版被台湾和韩国引进,获得了一致的好评,让我们看看其他两版的封面风格:)/ v& H0 { C# L8 L" J3 }
9 h4 v( C# ~" H2 N, D 9 |3 v- N5 {- R0 v0 e( X# k+ x/ b- o1 y( Q# P; t# p