| 
在线时间2 小时最后登录2013-7-16注册时间2013-7-15听众数0收听数0能力0 分体力7 点威望0 点阅读权限20积分5相册0日志0记录0帖子3主题2精华0分享0好友11
 
 升级    0% 该用户从未签到 自我介绍爱数学,爱编程
  | 
zan| 程序设计竞赛有着各种各样的形式,在此,我们来介绍其中最负盛名的几个。 ! V3 A3 H+ V" j- G$ _% f
 - r5 N: W  w: |2 \5 O) K世界规模的大赛——Google Code Jam(GCJ)/ |' c- q& y' N
 ; M8 D* I3 p" p" B" W* ]3 e
 它是Google公司几乎每年都会举办的世界规模的程序设计竞赛,参赛者要在2~3小时内解决大约4道题。一旦从在线(Online)进行的几轮预选中胜出,就能够参加现场(Onsite)总决赛。该赛事的特点是,每道题都备有Small和Large两组输入数据。即便是难度系数较大的问题,只要输入规模足够小,依然可以简单地求解,这一形式深受广大参赛者的喜欢。另外,GCJ并不在服务器上自动执行程序,而是要求将源代码和本地执行的结果一同提交。
 8 }- R( q3 L* m8 H3 e
 : v+ g3 w5 X: f# K4 x" H向高排名看齐!——TopCoder( m5 F) v2 G6 B! W# a# \# [
 
 W8 C4 P% t) o2 [% `9 nTopCoder公司是一家策划并举办程序设计竞赛的公司,它举办的比赛涉及多个领域。其中之一就是算法(Algorithm)比赛,该赛事大致每周都以SRM(Single Round Match)的形式举办一场,其具有以下特点。
 % {+ ]( U& G/ }1 S- \$ ^$ d" Z: ^4 I- j7 `
 (1) 在1小时15分钟的短时间内挑战3道题。
 ' A# ?! w6 `% `7 h7 p5 d* S% Z1 r$ X( N" |8 u
 (2) 提交的结果在比赛结束前是不知道的,整个过程中稍有失误,就会变成0分。. {) I+ X6 q* [
 
 5 g0 ^0 }8 L6 m. T; z* R% z. ~5 E(3) 在编码阶段(coding phase)结束后,还有一个挑战阶段(challege phase)。该阶段可以查找别人代码中的漏洞。如果能够提供一组输入数据,使别人的程序返回错误的结果,就能得到额外的分数。8 F. [& j6 U" L- P
 ( j4 q& _$ |+ g5 D8 G$ c7 z0 y
 其中第3条是该赛事独一无二的特点 ,也是阅读别人代码的好机会。TopCoder还有一个深受大家喜欢的等级分系统(rating system),它会依据SRM的结果给参赛选手排名。另外,TopCoder还会举办一年一度的TCO(TopCoder Open)公开赛。一旦从在线进行的几轮预选中胜出,就能够参加在拉斯维加斯 举办的总决赛。4 S% \$ ~; O" }2 K6 u* s5 `/ d
 
 4 e" q1 G* d+ G" G/ J" ?! M( M5 m! c历史最悠久的竞赛——ACM-ICPC
 + d6 m8 G5 [. u3 I
 4 g9 r; a# T' x9 O; MACM-ICPC是由美国计算机协会(ACM)主办的、面向大学生的竞赛,也是历史最悠久的程序设计竞赛。这是一个三人一队的团队比赛,选手要在5个小时内解决大约10道题。因为比赛中三名选手共用一台电脑,题量又比其他赛事多,并且多是一些实现复杂的问题,所以团队配合显得异常重要。想要从日本参加该项赛事,首先要参加在线进行的国内预选赛,胜出后才能参加亚洲区域赛,取得前几名的好成绩后才能够参加世界总决赛。
 ' J0 O" A$ q/ d1 W
 1 a! a9 h/ i/ B+ S" ^, ~讲到ACM-ICPC,不得不提到我们的《挑战程序设计竞赛》(第2版)译者,这颗闪耀在编程竞赛中的明星巫泽俊,就在2011年的5月30下午2时,他获得了第35届ACM国际大学生程序设计竞赛全球总决赛冠军,媒体称他为“世界最聪明的人”。(见下图)1 s$ ~, P- A7 U4 @
 
 3 _4 `- A2 k3 s: b& z  w
 ![]() ! b! w5 B& [  ^7 w; ?0 d 
 * f8 ]/ ?9 u! Z) J. t2 t
 ![]() " l1 z8 E, y2 o3 i9 `% o * p9 }3 g: Z7 `+ m' t) \
 巫泽俊平时训练的实验室
 : m6 T+ R  {; I# Q
 ( D1 H! V  |) q
 ![]() + v* \8 Q4 x# D2 ~7 K, J2 Z8 x5 E" M* B3 M
 巫泽俊
 / v, p+ p' v, [4 d  }) r9 C; o3 X; a" _4 X/ t  z9 B4 |
 面向中学生的信息学奥林匹克竞赛——JOI-IOI
 ! r! d, r8 P/ L$ c0 N: M; y  d8 j8 ~( L6 B) z# Q
 信息学奥林匹克竞赛是学科奥林匹克竞赛的一种,是以初中生和高中生为参赛对象的程序设计竞赛。在日本,首先要参加日本信息学奥林匹克竞赛,取得优异成绩后,才能作为日本国家队选手参加国际信息学奥林匹克竞赛。 其他比赛都需要尽可能快地解决尽可能多的问题,而信息学奥林匹克竞赛只要在规定时间内求解问题即可,成绩与所用时间无关,但是它相对其他比赛而言,求解每道题所花的时间要长得多。虽然是面向中学生的比赛,每年所出问题的难度却是非常高的。8 N: V. H+ \) S9 k" v! z& n. z
 # [  A  _( U0 ], q+ }
 通过网络自动评测——Online Judge(OJ)+ _9 a/ h& ]* `7 ]
 
 # G4 \/ R1 h; _7 z, m9 n在互联网上,有一些被称为Online Judge的系统,它们能够自动评测以往程序设计竞赛中的题目。利用该系统就可以练习了。另外,其中一些Online Judge也会定期举办自己的比赛,不妨去参加一下。在此列举几个有名的Online Judge。
 : H; S$ v( X; I* g( k/ N& x/ y0 @
 PKU Online Judge (POJ)——  题库中有大量的题目。
 + b$ g: Q6 y4 s; [! e6 C, W7 H* N会津大学Online Judge(AOJ)—— 还包含日语题。8 X1 @. a9 a& y2 L" o
 Sphere Online Judge(SPOJ)—— 允许使用各种各样的编程语言。
 8 O8 _! [  T) c& |, S8 QSGU Online Contester—— 具有模拟参加历史比赛的虚拟赛功能。
 ; A5 G4 D' w  QUVa Online Judge—— 老字号Online Judge,经常举办比赛。+ o; @5 E7 k, `$ r2 P
 Codecorces——  与TopCoder一样定期举办比赛,又同其他网站一样不断维护历届题库。! K8 S7 V1 \) {( J
 关于本书
 $ C8 Q3 J* z$ \/ e6 w/ e; [( x1 L' A5 t
 
 ![]() % e3 U" ~% d: @5 s9 }" d) W1 g6 f$ G# L0 d & x& P9 `3 m' V7 s( T
 《挑战程序设计竞赛(第2版)》分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由易及难的细致讲解,每章后附有习题。 通过本书不仅可以学到算法,更能学到其设计和运用的思想。
 3 E  c& @* i4 f% Q$ {% n8 X5 f$ b2 W, r! C( Z* l
 只要是具有编程基础知识的读者,均适合阅读本书。书中的源代码均用C++实现,不过只用到了其基本功能,所以即便读者不熟悉C++也不影响阅读。
 , ]& d9 o& W* I* r. V9 t* i4 ^+ g
 本书的第一版被台湾和韩国引进,获得了一致的好评,让我们看看其他两版的封面风格:)8 p% z5 |1 S8 C. J& f5 U
 
 ; Z( g$ @4 C3 \; l) X
 ![]() 7 U& t8 ~& ~' O; ?4 o9 \0 g/ h9 b5 d
 
 | 
 |