| 
在线时间2 小时最后登录2013-7-16注册时间2013-7-15听众数0收听数0能力0 分体力7 点威望0 点阅读权限20积分5相册0日志0记录0帖子3主题2精华0分享0好友11
 
 升级    0% 该用户从未签到 自我介绍爱数学,爱编程
  | 
zan| 程序设计竞赛有着各种各样的形式,在此,我们来介绍其中最负盛名的几个。. L, {5 y( q0 A7 I8 _ % {9 D$ z0 z9 {5 T- }2 X* G/ d* V
 世界规模的大赛——Google Code Jam(GCJ)
 ) A1 |3 `) d# d/ V1 |5 T- t
 3 S3 o- N1 B1 S9 S- ?它是Google公司几乎每年都会举办的世界规模的程序设计竞赛,参赛者要在2~3小时内解决大约4道题。一旦从在线(Online)进行的几轮预选中胜出,就能够参加现场(Onsite)总决赛。该赛事的特点是,每道题都备有Small和Large两组输入数据。即便是难度系数较大的问题,只要输入规模足够小,依然可以简单地求解,这一形式深受广大参赛者的喜欢。另外,GCJ并不在服务器上自动执行程序,而是要求将源代码和本地执行的结果一同提交。. d$ N$ r- B/ j1 R1 v
 
 ( p' G* }# q4 m% m1 Y0 G向高排名看齐!——TopCoder
 , S9 _& I3 i  ^5 S, I
 . I0 a; u3 m0 e" U/ k" VTopCoder公司是一家策划并举办程序设计竞赛的公司,它举办的比赛涉及多个领域。其中之一就是算法(Algorithm)比赛,该赛事大致每周都以SRM(Single Round Match)的形式举办一场,其具有以下特点。0 a7 ^0 Y0 O( i5 V  f; ?+ }) n7 \& w
 % }1 Y' t! a( ~: l. L  w9 i
 (1) 在1小时15分钟的短时间内挑战3道题。8 R( C; q9 v* E, ]9 I6 F
 
 6 }3 M- a( w' X) E  g3 I3 Z7 K(2) 提交的结果在比赛结束前是不知道的,整个过程中稍有失误,就会变成0分。
 9 f+ T+ `% P& Q/ X- n. E' ?1 u# Q. B$ d+ A- |* ]" ~( K
 (3) 在编码阶段(coding phase)结束后,还有一个挑战阶段(challege phase)。该阶段可以查找别人代码中的漏洞。如果能够提供一组输入数据,使别人的程序返回错误的结果,就能得到额外的分数。" X: N# |( ^! ]. I$ o6 r
 ; L: `4 B3 d' z. V
 其中第3条是该赛事独一无二的特点 ,也是阅读别人代码的好机会。TopCoder还有一个深受大家喜欢的等级分系统(rating system),它会依据SRM的结果给参赛选手排名。另外,TopCoder还会举办一年一度的TCO(TopCoder Open)公开赛。一旦从在线进行的几轮预选中胜出,就能够参加在拉斯维加斯 举办的总决赛。
 / z  I: `6 i. o* A! k: ~7 y' F4 F8 X! s
 历史最悠久的竞赛——ACM-ICPC% U0 v" w5 `# o2 I
 & O. s4 J0 K; [0 G2 F8 l- A
 ACM-ICPC是由美国计算机协会(ACM)主办的、面向大学生的竞赛,也是历史最悠久的程序设计竞赛。这是一个三人一队的团队比赛,选手要在5个小时内解决大约10道题。因为比赛中三名选手共用一台电脑,题量又比其他赛事多,并且多是一些实现复杂的问题,所以团队配合显得异常重要。想要从日本参加该项赛事,首先要参加在线进行的国内预选赛,胜出后才能参加亚洲区域赛,取得前几名的好成绩后才能够参加世界总决赛。! O+ k$ `  i7 d3 ^2 t
 & p) \2 g- W9 y
 讲到ACM-ICPC,不得不提到我们的《挑战程序设计竞赛》(第2版)译者,这颗闪耀在编程竞赛中的明星巫泽俊,就在2011年的5月30下午2时,他获得了第35届ACM国际大学生程序设计竞赛全球总决赛冠军,媒体称他为“世界最聪明的人”。(见下图)
 . O, D( L& L' M, t5 e! y% B
 2 `, h7 f7 H9 ^
 ![]() ; I6 o$ k6 w6 |) I* z# [0 Z. U# n& v, Q  }
 
 ![]() ; J+ ~. a/ Z5 b4 X 1 u6 P, \$ w2 I* a# k' a9 G
 巫泽俊平时训练的实验室" [. \# B6 }+ o
 + P' V3 c8 O4 v
 
 ![]() 9 i9 u5 s6 M) H7 `8 K6 t + [9 D# T: m$ P) p. Y
 巫泽俊
 & k9 g& P1 b. G: u" V9 T8 G0 f4 U3 a( q+ R% K2 L9 s/ n, e
 面向中学生的信息学奥林匹克竞赛——JOI-IOI) g( O+ K; K4 n/ l
 
 2 \' @/ ^% V0 p3 X2 x7 l信息学奥林匹克竞赛是学科奥林匹克竞赛的一种,是以初中生和高中生为参赛对象的程序设计竞赛。在日本,首先要参加日本信息学奥林匹克竞赛,取得优异成绩后,才能作为日本国家队选手参加国际信息学奥林匹克竞赛。 其他比赛都需要尽可能快地解决尽可能多的问题,而信息学奥林匹克竞赛只要在规定时间内求解问题即可,成绩与所用时间无关,但是它相对其他比赛而言,求解每道题所花的时间要长得多。虽然是面向中学生的比赛,每年所出问题的难度却是非常高的。" g. k( b1 }- D7 o3 \
 
 5 U4 [+ X5 ~" ?, d6 o* _2 u( \通过网络自动评测——Online Judge(OJ)# P: G  q3 p2 }1 t# D$ M% j& A
 0 }% _/ m# {& ?
 在互联网上,有一些被称为Online Judge的系统,它们能够自动评测以往程序设计竞赛中的题目。利用该系统就可以练习了。另外,其中一些Online Judge也会定期举办自己的比赛,不妨去参加一下。在此列举几个有名的Online Judge。
 2 b" D# z; Z2 ?" n" ?4 F
 0 ^! Y1 v2 [1 U" ?/ YPKU Online Judge (POJ)——  题库中有大量的题目。8 ~! u( ?) G: T: e
 会津大学Online Judge(AOJ)—— 还包含日语题。
 ! O6 ^' I- _9 X' N% {9 GSphere Online Judge(SPOJ)—— 允许使用各种各样的编程语言。+ y/ k9 J2 i; O2 A
 SGU Online Contester—— 具有模拟参加历史比赛的虚拟赛功能。
 $ t) T8 s1 I; |1 F. J6 p6 ~1 |UVa Online Judge—— 老字号Online Judge,经常举办比赛。) e2 q8 d" d) ~. h: m) `
 Codecorces——  与TopCoder一样定期举办比赛,又同其他网站一样不断维护历届题库。1 X  q+ z9 K% ^5 [6 i# `3 w
 关于本书
 $ f- j! s" Q3 j2 p2 v
 7 J& h* m  \4 E
 ![]() ' C* A9 ~/ h% b/ ?  T3 o! E# Q 0 |9 X$ i3 @  b" C. H$ w1 n
 《挑战程序设计竞赛(第2版)》分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由易及难的细致讲解,每章后附有习题。 通过本书不仅可以学到算法,更能学到其设计和运用的思想。" a5 q  d: H8 ]
 
 ! F* z2 j5 X/ j" K7 m只要是具有编程基础知识的读者,均适合阅读本书。书中的源代码均用C++实现,不过只用到了其基本功能,所以即便读者不熟悉C++也不影响阅读。( F/ o: ^9 o0 o
 
 2 t4 [' B  I" \) q本书的第一版被台湾和韩国引进,获得了一致的好评,让我们看看其他两版的封面风格:)
 & w0 B7 |  X4 B/ m% h1 y2 @+ {7 ~# L
 
 ![]() ! p$ n1 `$ u% D9 g3 I
 , m! U: e5 I' o7 `% f; K
 | 
 |