| 
在线时间2 小时最后登录2013-7-16注册时间2013-7-15听众数0收听数0能力0 分体力7 点威望0 点阅读权限20积分5相册0日志0记录0帖子3主题2精华0分享0好友11
 
 升级    0% 该用户从未签到 自我介绍爱数学,爱编程
  | 
zan| 程序设计竞赛有着各种各样的形式,在此,我们来介绍其中最负盛名的几个。 # @  s+ g, A$ w2 Q8 c; P
 7 o* h0 w8 l2 t1 C世界规模的大赛——Google Code Jam(GCJ)
 ; V1 o  N0 f. T. R/ W! }3 i6 N$ M7 k5 |
 它是Google公司几乎每年都会举办的世界规模的程序设计竞赛,参赛者要在2~3小时内解决大约4道题。一旦从在线(Online)进行的几轮预选中胜出,就能够参加现场(Onsite)总决赛。该赛事的特点是,每道题都备有Small和Large两组输入数据。即便是难度系数较大的问题,只要输入规模足够小,依然可以简单地求解,这一形式深受广大参赛者的喜欢。另外,GCJ并不在服务器上自动执行程序,而是要求将源代码和本地执行的结果一同提交。
 . D* j- i( u" k3 w0 S" u: J0 w+ u! w! b* p+ _
 向高排名看齐!——TopCoder
 & j! C( J' t- h( ~9 I4 A; K  f. W; e' K
 TopCoder公司是一家策划并举办程序设计竞赛的公司,它举办的比赛涉及多个领域。其中之一就是算法(Algorithm)比赛,该赛事大致每周都以SRM(Single Round Match)的形式举办一场,其具有以下特点。
 8 z# _+ t# s2 k- g$ y: |
 4 L5 l) I) x$ x+ r(1) 在1小时15分钟的短时间内挑战3道题。: a6 n. \/ M! u8 [. H8 a3 m( |
 
 S. {+ g- G, J' }+ ^(2) 提交的结果在比赛结束前是不知道的,整个过程中稍有失误,就会变成0分。
 5 C3 `" |3 J7 T' p; m$ O$ C5 a  S; b; h9 U1 d# j5 |+ x5 U! @
 (3) 在编码阶段(coding phase)结束后,还有一个挑战阶段(challege phase)。该阶段可以查找别人代码中的漏洞。如果能够提供一组输入数据,使别人的程序返回错误的结果,就能得到额外的分数。
 ' g+ O( k  P+ M* r* j" D
 & y( p9 N/ a6 K5 w! _其中第3条是该赛事独一无二的特点 ,也是阅读别人代码的好机会。TopCoder还有一个深受大家喜欢的等级分系统(rating system),它会依据SRM的结果给参赛选手排名。另外,TopCoder还会举办一年一度的TCO(TopCoder Open)公开赛。一旦从在线进行的几轮预选中胜出,就能够参加在拉斯维加斯 举办的总决赛。: ]) _4 c5 @; V" _# \
 & {- r8 r- T" K. t; r1 |7 D
 历史最悠久的竞赛——ACM-ICPC! N$ V& |0 ]; @4 a
 / `- Q/ ^$ V: p4 Q7 P0 G
 ACM-ICPC是由美国计算机协会(ACM)主办的、面向大学生的竞赛,也是历史最悠久的程序设计竞赛。这是一个三人一队的团队比赛,选手要在5个小时内解决大约10道题。因为比赛中三名选手共用一台电脑,题量又比其他赛事多,并且多是一些实现复杂的问题,所以团队配合显得异常重要。想要从日本参加该项赛事,首先要参加在线进行的国内预选赛,胜出后才能参加亚洲区域赛,取得前几名的好成绩后才能够参加世界总决赛。
 f- Z8 w0 m. i4 M/ N+ z5 k" }
 7 k5 b2 Q! e5 L2 i  T& m讲到ACM-ICPC,不得不提到我们的《挑战程序设计竞赛》(第2版)译者,这颗闪耀在编程竞赛中的明星巫泽俊,就在2011年的5月30下午2时,他获得了第35届ACM国际大学生程序设计竞赛全球总决赛冠军,媒体称他为“世界最聪明的人”。(见下图)
 ' X9 v* a& H: N! \( a3 \* d6 C4 J# f' {' J+ _5 m7 _
 
 ![]() 8 l0 f6 G# _4 [4 r' A% |: q& C$ ]9 A1 G5 d
 
 ![]() ! A) V9 v( y( e ' J3 y+ O) z; G% {( ], W' c* J
 巫泽俊平时训练的实验室
 1 Y* N, _7 n5 \. @* C3 R" c# R4 d4 _  R* W7 y+ a: L. r
 
 ![]() 5 Z, M. p, B6 r3 n8 ~' @" C 
 # E, b6 q9 u, L  d3 H' g巫泽俊
 B! t! N9 y2 D5 H* N) ?
 6 d' L9 }/ B7 G# [# E! ~- W面向中学生的信息学奥林匹克竞赛——JOI-IOI% @) f# ^  ]. f. z. [# u
 
 1 T, b5 q6 i: A$ [1 C# i" q7 q+ T信息学奥林匹克竞赛是学科奥林匹克竞赛的一种,是以初中生和高中生为参赛对象的程序设计竞赛。在日本,首先要参加日本信息学奥林匹克竞赛,取得优异成绩后,才能作为日本国家队选手参加国际信息学奥林匹克竞赛。 其他比赛都需要尽可能快地解决尽可能多的问题,而信息学奥林匹克竞赛只要在规定时间内求解问题即可,成绩与所用时间无关,但是它相对其他比赛而言,求解每道题所花的时间要长得多。虽然是面向中学生的比赛,每年所出问题的难度却是非常高的。$ i$ ?" h  I# H" \  n" a( Y) m) `
 
 9 p+ r1 \1 a8 X2 c; p& t% ]# E6 T* H通过网络自动评测——Online Judge(OJ)
 . N$ k# J' D, x9 z) |. u
 8 i* F" b1 i: D在互联网上,有一些被称为Online Judge的系统,它们能够自动评测以往程序设计竞赛中的题目。利用该系统就可以练习了。另外,其中一些Online Judge也会定期举办自己的比赛,不妨去参加一下。在此列举几个有名的Online Judge。' Q- [$ O! v% I9 E
 
 . W/ Z0 m( F  _* aPKU Online Judge (POJ)——  题库中有大量的题目。
 . z. w+ H" V- j- B/ {1 D0 ^3 p会津大学Online Judge(AOJ)—— 还包含日语题。
 9 x/ ]0 s- I" Z0 R$ k. X) J2 n7 TSphere Online Judge(SPOJ)—— 允许使用各种各样的编程语言。& M/ j5 k9 B5 |' S6 L9 p  s0 I# [
 SGU Online Contester—— 具有模拟参加历史比赛的虚拟赛功能。& n; O' r; j: [; M+ Y4 }
 UVa Online Judge—— 老字号Online Judge,经常举办比赛。0 e, P+ f: r( |/ U
 Codecorces——  与TopCoder一样定期举办比赛,又同其他网站一样不断维护历届题库。
 1 G# ?! @; H+ n. I关于本书8 j3 V# P8 P" z4 e- O7 r( t
 % L0 o) X9 l; \# x+ v
 
 ![]() 1 X' L1 O0 l; u5 M
 0 V- L* d8 e- z《挑战程序设计竞赛(第2版)》分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由易及难的细致讲解,每章后附有习题。 通过本书不仅可以学到算法,更能学到其设计和运用的思想。
 4 r2 E: I1 t2 C& d. k4 F+ a  J7 |
 ' @0 p. S% U% I' `/ @/ p- s) ^只要是具有编程基础知识的读者,均适合阅读本书。书中的源代码均用C++实现,不过只用到了其基本功能,所以即便读者不熟悉C++也不影响阅读。
 * j6 g7 o8 `3 q8 w' n( s4 S- c! I/ Z! g  x0 I
 本书的第一版被台湾和韩国引进,获得了一致的好评,让我们看看其他两版的封面风格:): g( Z) L7 J+ a9 l+ |
 % ^2 s8 Z7 c1 ^
 
 ![]() A- [$ I5 Z8 A+ m. a; L& G7 z- @: r2 f; N# H( W
 
 | 
 |