| 
在线时间2 小时最后登录2013-7-16注册时间2013-7-15听众数0收听数0能力0 分体力7 点威望0 点阅读权限20积分5相册0日志0记录0帖子3主题2精华0分享0好友11
 
 升级    0% 该用户从未签到 自我介绍爱数学,爱编程
  | 
zan| 程序设计竞赛有着各种各样的形式,在此,我们来介绍其中最负盛名的几个。" d" c3 m8 g. |' e. D 
 2 {" O. ]) E/ b# h7 l5 t  W) U世界规模的大赛——Google Code Jam(GCJ)
 & a6 D4 k; x: f0 {! E3 o
 : U3 Q5 `/ F( d7 q; e它是Google公司几乎每年都会举办的世界规模的程序设计竞赛,参赛者要在2~3小时内解决大约4道题。一旦从在线(Online)进行的几轮预选中胜出,就能够参加现场(Onsite)总决赛。该赛事的特点是,每道题都备有Small和Large两组输入数据。即便是难度系数较大的问题,只要输入规模足够小,依然可以简单地求解,这一形式深受广大参赛者的喜欢。另外,GCJ并不在服务器上自动执行程序,而是要求将源代码和本地执行的结果一同提交。
 , c' B3 a9 n% o! {9 g/ H8 b/ c8 L5 e
 7 N; M. ^! N* M& i% ]向高排名看齐!——TopCoder
 ! Q" m# |- p' \: }( L3 I+ y6 b1 M, Q
 TopCoder公司是一家策划并举办程序设计竞赛的公司,它举办的比赛涉及多个领域。其中之一就是算法(Algorithm)比赛,该赛事大致每周都以SRM(Single Round Match)的形式举办一场,其具有以下特点。
 ( T0 ?& V4 B8 s( M: g9 R
 & P5 c- v, P0 Y! Y(1) 在1小时15分钟的短时间内挑战3道题。
 9 k! i% u# s5 C
 r# O+ d. Y2 Y+ c& }(2) 提交的结果在比赛结束前是不知道的,整个过程中稍有失误,就会变成0分。8 f/ {  J+ y  K6 }' V
 - e& y8 p& R0 z  q9 f
 (3) 在编码阶段(coding phase)结束后,还有一个挑战阶段(challege phase)。该阶段可以查找别人代码中的漏洞。如果能够提供一组输入数据,使别人的程序返回错误的结果,就能得到额外的分数。) }8 `' I1 h) v9 y: F3 P# q
 4 l$ Q$ V1 u1 M3 j1 Q6 y
 其中第3条是该赛事独一无二的特点 ,也是阅读别人代码的好机会。TopCoder还有一个深受大家喜欢的等级分系统(rating system),它会依据SRM的结果给参赛选手排名。另外,TopCoder还会举办一年一度的TCO(TopCoder Open)公开赛。一旦从在线进行的几轮预选中胜出,就能够参加在拉斯维加斯 举办的总决赛。
 - e5 A( R! e$ ^+ L4 I$ n
 & C( ~, l9 m8 t历史最悠久的竞赛——ACM-ICPC
 : f+ e6 t2 o/ v9 O' u
 3 M  |4 y8 V, H( w4 ]ACM-ICPC是由美国计算机协会(ACM)主办的、面向大学生的竞赛,也是历史最悠久的程序设计竞赛。这是一个三人一队的团队比赛,选手要在5个小时内解决大约10道题。因为比赛中三名选手共用一台电脑,题量又比其他赛事多,并且多是一些实现复杂的问题,所以团队配合显得异常重要。想要从日本参加该项赛事,首先要参加在线进行的国内预选赛,胜出后才能参加亚洲区域赛,取得前几名的好成绩后才能够参加世界总决赛。: O8 u2 J7 E! |
 t( H8 h0 q1 F7 W/ i! [) @4 [, i6 ^
 讲到ACM-ICPC,不得不提到我们的《挑战程序设计竞赛》(第2版)译者,这颗闪耀在编程竞赛中的明星巫泽俊,就在2011年的5月30下午2时,他获得了第35届ACM国际大学生程序设计竞赛全球总决赛冠军,媒体称他为“世界最聪明的人”。(见下图)* Z; l0 w9 O& m( F' \
 % D+ L$ A4 T% V* Q' _# R- {
 
 ![]() % s+ b9 l# {, v& e7 u1 s$ j 
 8 e) E0 Z5 ^; T6 h' T  b: U3 C% N+ }
 ![]() % }$ G% ?9 x0 \* P5 C2 u8 E ( ]& y6 K: c9 E. c6 ~1 ^( M* Q
 巫泽俊平时训练的实验室% K  S' O' U+ A' f$ a9 L& U
 
 # V" _( ]' M/ `$ b" [- T$ i7 |. I
 ![]() $ W* E" e0 j& ^ 
 ) n, k: V" Z; g6 l* t0 c4 P) ]巫泽俊
 5 J8 Y! x+ P; @+ ~1 S8 M' b) s. |+ G/ \2 _
 面向中学生的信息学奥林匹克竞赛——JOI-IOI5 R. {: q0 [9 K* Z4 u# C
 7 @' P6 P) L9 f
 信息学奥林匹克竞赛是学科奥林匹克竞赛的一种,是以初中生和高中生为参赛对象的程序设计竞赛。在日本,首先要参加日本信息学奥林匹克竞赛,取得优异成绩后,才能作为日本国家队选手参加国际信息学奥林匹克竞赛。 其他比赛都需要尽可能快地解决尽可能多的问题,而信息学奥林匹克竞赛只要在规定时间内求解问题即可,成绩与所用时间无关,但是它相对其他比赛而言,求解每道题所花的时间要长得多。虽然是面向中学生的比赛,每年所出问题的难度却是非常高的。& p: e- ]( ]5 Q' ]4 g0 v
 
 0 ?' E) W. ^5 u  D) X  E, B3 q通过网络自动评测——Online Judge(OJ)
 ! x. }5 c2 w8 v) Q2 ?% g+ X6 v
 ) K$ }2 Z. R0 A. x在互联网上,有一些被称为Online Judge的系统,它们能够自动评测以往程序设计竞赛中的题目。利用该系统就可以练习了。另外,其中一些Online Judge也会定期举办自己的比赛,不妨去参加一下。在此列举几个有名的Online Judge。" [' z, m1 h4 x7 a4 g6 c" G
 
 % ]) o0 {3 \0 I8 [! o* W, z) LPKU Online Judge (POJ)——  题库中有大量的题目。" r" d7 U) Y0 K2 x9 Q
 会津大学Online Judge(AOJ)—— 还包含日语题。- {7 n' |$ Z/ g0 P8 ^* Y
 Sphere Online Judge(SPOJ)—— 允许使用各种各样的编程语言。% J  ^: G2 ?, R
 SGU Online Contester—— 具有模拟参加历史比赛的虚拟赛功能。
 " |5 ?. F9 c" x! c+ B5 YUVa Online Judge—— 老字号Online Judge,经常举办比赛。
 2 _. X* i: I4 gCodecorces——  与TopCoder一样定期举办比赛,又同其他网站一样不断维护历届题库。; ]# T' U$ \1 Z
 关于本书
 : p5 j* g0 x+ [! s* I3 S7 P
 6 [/ I5 r/ M* d; C% Q6 Q
 ![]() % x2 L9 d0 ^& z
 o/ k  c/ u: _% ^6 C4 s《挑战程序设计竞赛(第2版)》分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由易及难的细致讲解,每章后附有习题。 通过本书不仅可以学到算法,更能学到其设计和运用的思想。$ B$ d9 N. t- Q2 s+ @  S  a* p
 2 U1 @/ V/ [6 O% ?) Z& ?
 只要是具有编程基础知识的读者,均适合阅读本书。书中的源代码均用C++实现,不过只用到了其基本功能,所以即便读者不熟悉C++也不影响阅读。
 , r: B. K$ }( F% p
 6 N1 P3 s! }( b7 v本书的第一版被台湾和韩国引进,获得了一致的好评,让我们看看其他两版的封面风格:)0 P7 e( W7 i" A
 
 ( P0 Y( X: j: S  ~0 J3 |
 ![]() ( a( I& S7 h# x9 G  u, [( f" ~ 6 f( a, d0 l2 O! x& @
 
 | 
 |