在线时间 2 小时 最后登录 2013-7-16 注册时间 2013-7-15 听众数 0 收听数 0 能力 0 分 体力 7 点 威望 0 点 阅读权限 20 积分 5 相册 0 日志 0 记录 0 帖子 3 主题 2 精华 0 分享 0 好友 11
升级 0%
该用户从未签到
自我介绍 爱数学,爱编程
程序设计竞赛有着各种各样的形式,在此,我们来介绍其中最负盛名的几个。
( z5 @% b, _- ]5 u$ _, p/ `
* p' K! h' B: ^8 f 世界规模的大赛——Google Code Jam(GCJ)2 x; ?9 X+ K4 M/ P
% [& ^# y n, T/ t5 I+ F9 M! X6 t 它是Google公司几乎每年都会举办的世界规模的程序设计竞赛,参赛者要在2~3小时内解决大约4道题。一旦从在线(Online)进行的几轮预选中胜出,就能够参加现场(Onsite)总决赛。该赛事的特点是,每道题都备有Small和Large两组输入数据。即便是难度系数较大的问题,只要输入规模足够小,依然可以简单地求解,这一形式深受广大参赛者的喜欢。另外,GCJ并不在服务器上自动执行程序,而是要求将源代码和本地执行的结果一同提交。1 D5 N T# u f* A" j
# `" r4 ^7 H/ u8 B1 ~( K 向高排名看齐!——TopCoder
+ t8 m) H& ?6 _( j+ p% s! \! ] ! s) A3 w4 ?- f/ M1 h
TopCoder公司是一家策划并举办程序设计竞赛的公司,它举办的比赛涉及多个领域。其中之一就是算法(Algorithm)比赛,该赛事大致每周都以SRM(Single Round Match)的形式举办一场,其具有以下特点。! | N# S: h* h
+ {' Z' u; B9 N7 b- D3 J
(1) 在1小时15分钟的短时间内挑战3道题。" h' p; Q2 U/ ?. M7 O J
4 T8 ]% n6 q; H" V% w8 l (2) 提交的结果在比赛结束前是不知道的,整个过程中稍有失误,就会变成0分。$ f' A, T& s, C' ~+ I" y
+ p8 ^( W3 u4 h (3) 在编码阶段(coding phase)结束后,还有一个挑战阶段(challege phase)。该阶段可以查找别人代码中的漏洞。如果能够提供一组输入数据,使别人的程序返回错误的结果,就能得到额外的分数。
7 F3 z0 d1 s' I' w/ v$ ^ 6 w1 o: |. T1 e( X* W
其中第3条是该赛事独一无二的特点 ,也是阅读别人代码的好机会。TopCoder还有一个深受大家喜欢的等级分系统(rating system),它会依据SRM的结果给参赛选手排名。另外,TopCoder还会举办一年一度的TCO(TopCoder Open)公开赛。一旦从在线进行的几轮预选中胜出,就能够参加在拉斯维加斯 举办的总决赛。
" V. R( c% Q' O- D8 R # x. x1 v& v6 g9 l5 n* K3 G1 g" M+ \$ t
历史最悠久的竞赛——ACM-ICPC
; {6 n' X9 S3 h / f- }; ^: K- t; ^; N5 `* R
ACM-ICPC是由美国计算机协会(ACM)主办的、面向大学生的竞赛,也是历史最悠久的程序设计竞赛。这是一个三人一队的团队比赛,选手要在5个小时内解决大约10道题。因为比赛中三名选手共用一台电脑,题量又比其他赛事多,并且多是一些实现复杂的问题,所以团队配合显得异常重要。想要从日本参加该项赛事,首先要参加在线进行的国内预选赛,胜出后才能参加亚洲区域赛,取得前几名的好成绩后才能够参加世界总决赛。
, u* h; b7 T( R+ |5 M * ?6 H0 q; _& [/ S
讲到ACM-ICPC,不得不提到我们的《挑战程序设计竞赛》(第2版)译者,这颗闪耀在编程竞赛中的明星巫泽俊,就在2011年的5月30下午2时,他获得了第35届ACM国际大学生程序设计竞赛全球总决赛冠军,媒体称他为“世界最聪明的人”。(见下图)$ T* _' e: o6 W9 f% _. F% r
7 I$ k* \5 t; r4 b
5 }# d! i- R1 [6 q4 @) q
' {' }; G/ a k0 Y9 d# I5 b) r1 J" M
2 y# i. b. w. k9 A. a C7 F* q
3 V5 w# T: o0 U/ S 巫泽俊平时训练的实验室4 M3 g6 [( R2 t) d# U) m8 B
5 B' o4 F8 D0 h- g% c! k* ]$ A
& C! Z2 ^ u0 \8 Z0 ~ ; f( p- ~& X: D: }
巫泽俊% Z4 Y: P7 l3 o; |. w
& q. t% D: B+ o* ` 面向中学生的信息学奥林匹克竞赛——JOI-IOI
* e [8 m+ N; U2 B# D x ( B- T1 Z4 J) Z& y5 Z
信息学奥林匹克竞赛是学科奥林匹克竞赛的一种,是以初中生和高中生为参赛对象的程序设计竞赛。在日本,首先要参加日本信息学奥林匹克竞赛,取得优异成绩后,才能作为日本国家队选手参加国际信息学奥林匹克竞赛。 其他比赛都需要尽可能快地解决尽可能多的问题,而信息学奥林匹克竞赛只要在规定时间内求解问题即可,成绩与所用时间无关,但是它相对其他比赛而言,求解每道题所花的时间要长得多。虽然是面向中学生的比赛,每年所出问题的难度却是非常高的。. q T' c7 c. j9 O7 j/ s" s
4 X1 a5 k2 \9 r/ j- g' p4 d$ }
通过网络自动评测——Online Judge(OJ). W0 N' t7 q, P0 R5 ~; B& s3 b: g
2 d. y" p) l% P: W4 z 在互联网上,有一些被称为Online Judge的系统,它们能够自动评测以往程序设计竞赛中的题目。利用该系统就可以练习了。另外,其中一些Online Judge也会定期举办自己的比赛,不妨去参加一下。在此列举几个有名的Online Judge。
/ V* E( E% s) {/ F/ |' \' U; M' v
: ]# }1 y- D, D$ y; @! ]' j( w2 S( u PKU Online Judge (POJ)—— 题库中有大量的题目。3 s+ G9 G( d# K2 p( }
会津大学Online Judge(AOJ)—— 还包含日语题。
" H2 P4 v" r/ U4 X% l- c1 d6 S Sphere Online Judge(SPOJ)—— 允许使用各种各样的编程语言。. D+ U3 ]' F' m2 w' [& F
SGU Online Contester—— 具有模拟参加历史比赛的虚拟赛功能。
" O( S- r6 \: Z& W& ^; K UVa Online Judge—— 老字号Online Judge,经常举办比赛。- k8 j, c/ [2 L9 z% V9 k7 b3 D7 B
Codecorces—— 与TopCoder一样定期举办比赛,又同其他网站一样不断维护历届题库。
6 ]5 G/ a% E9 Y. ~ 关于本书! f& P* C P1 \2 V" f5 [
; t# {% G3 s/ Z" Q9 i
3 D3 K# w! O5 E2 D: |2 }
, T4 R* k: J& | 《挑战程序设计竞赛(第2版)》分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由易及难的细致讲解,每章后附有习题。 通过本书不仅可以学到算法,更能学到其设计和运用的思想。
0 A1 k/ i$ r6 P5 Q ~! L0 V$ O ! l2 m$ [& S5 }$ k) ^8 ?
只要是具有编程基础知识的读者,均适合阅读本书。书中的源代码均用C++实现,不过只用到了其基本功能,所以即便读者不熟悉C++也不影响阅读。# ~1 w7 m( c( y5 i
. I; s8 x& @8 V0 u9 V! e. R! x
本书的第一版被台湾和韩国引进,获得了一致的好评,让我们看看其他两版的封面风格:)
$ C. N* |1 ~& p. L3 O+ @" M
9 B; p( }+ c0 x4 z" d0 x( \ 4 p! e7 b: h/ }0 f0 u& E# e( ~
# x9 J- s; L9 o7 e1 v
zan