Transcript ACM/ICPC
2012年ACM/ICPC
校集训队招新讲
6-1 万山川
ACM/ICPC
为什么学?
学什么?
怎么学?
程序设计竞赛的意义
Go to fly?
逃体能、公差?
保研加分?
……
程序设计竞赛的意义
•
•
•
•
•
习惯、态度、方法、能力:
自主学习的能力
分析判断的能力
团队协作的能力
解决问题的能力
安身立命的能力
“深入开展信息化条件下的军事训
练,增强基于信息系统的作战能
力。”
——十八大报告
“全军要深刻认识军队在国家安全
和发展战略全局中的重要地位和
作用,全面提高信息化条件下威
慑和实战能力,坚决维护国家主
权、安全、发展利益。”
——中央军委扩大会议
计算机软件技术——
•
信息化战争的智慧之神
计算机技术——
•
信息化战争的操控中枢
应用广泛
专业领域:人工智能、计算机系统、数字系统
设计、电子系统设计、信息技术与系统、软件
工程、人机互动、多媒体技术、电脑游戏开发、
网络信息安全
交叉学科:计算机辅助、计算机仿真、金融计
算机学、信息系统管理、生物信息学、分子计
算学、认知科学
相关赛事
Google Code Jam
百度之星
Facebook骇客杯
VK Cup
Topcoder Open
网易有道难题
腾讯编程马拉松
搜狐杯智能体大赛
……
百度之星
全国总决赛
T恤、奖杯、度度熊
参观百度大厦
内部技术讲座
万国击剑
德云社相声
结识牛人
开拓视野
……
传奇人物
Petr Mitrichev
楼天城
戴文渊
Petr Mitrichev
假如普京在一个对的时间从克林姆林宫的窗户往外
看,他有可能看到河对岸Google莫斯科办公室里那
个世界上最牛的程序员。
Petr Mitrichev,现年27岁。他现在在Google俄罗斯
分公司的搜索引擎部门工作,只在休闲时去参加编
程比赛,但仍然排名第一。
他的冠军头衔则来自各项编程大赛。在这些比赛中,
程序员会为了现金奖励、旅游机会、以及在世界上
任何其他地方都无法获得的荣誉,编写代码。
“当你在一个竞赛中解决一个难题时,你就会有
一种成就感。”
“这类比赛的美在于,
它是完全自动的,不会
牵涉任何的人为评判。”
“我之所以会坚持参加
各类比赛,是因为编程
在我看来就是一种休闲。
你可以选择看电视节目,
但你也可以选择参加Top
Coder每周的比赛。”
楼天城
•
•
•
•
•
•
•
ACRush
中国大学生编程竞赛第一人
常以一人单挑一个团队,人称“楼教主”
2004年国际信息学奥林匹克竞赛金牌
2007、2009年ACM/ICPC全球总决赛亚军
2008年谷歌编程挑战赛冠军
2012年9月入职美国谷歌公司,负责社交网络
“有谣言说三国杀游戏是你发明的,是真的吗?”
•
“这个不是谣言,是真的。”
“在IT届有两类公司,一类以谷歌为代表,一直做
别人做不到的事,向世人证明再难的事也可以做
出来;一类以苹果为代表,做别人都在做的事,
却也证明一件事能做到多好。”——楼天城
戴文渊
•
•
•
•
•
•
2005年ACM/ICPC全球总冠军
先后3次获得亚洲区域赛冠军
学术论文多次被SCI及国际顶级学术会议AAAI和
ICML收录
上海交大十大新闻人物之年度神话人物
2009年放弃继续攻读博士学位入职百度
现任百度商务搜索部主任架构师、资深专家、
首席科学家,百度凤巢策略团队模型组技术负
责人
出生于1983年的戴文渊今年虚岁30岁,上个月,
他率领“凤巢个性化投放策略”团队获得百度公司
设立的 “最高奖”。他
的团队成员更加年轻,绝
大部分毕业不过两、三年,
7名年轻人高高兴兴地分享
了百万美元奖金。
当一些同龄人还处于事业的
摸索期,戴文渊和他的伙伴
们已翻越了职业生涯的一座
高峰,并向新的方向前行。
曾有一位计算机非常厉害的前辈去了美国的伊
利诺斯大学,但很快被世界著名的网络公司挖
走。戴文渊知道后感到非常惋惜。他为了不被
美国的商业诱惑,潜心研究学问,放弃了出国
的机会,留在了上海交大读研。
“学校的资源有限,经过一段时间之后我发现也
许读下去做不出自己想要的。你自己想做什么
自己可以控制,但是外部环境也很重要,没有
资源的话也做不出想要的效果。我的个人兴趣
在于数据驱动,百度最大的优势就是数据,所
以在公司的环境下才能做出来。实验室平台还
是比较局限的。”
讲这些的目的?
“计算机信息是一种日新月异的科技,昨天的
技术,打不赢明天的战争,在信息领域,闭门造车
的防护是被动挨打,我们应该走出去,向世界学习,
只有这样,我们的信息安全才能得到有效保证。”
——李聪娜 第12届全军学习成才标兵
Introduction to Competitive
Programming Contests
Mathematics
Data Structures
Dynamic Programming (DP)
Combinatorial Games
Basic Graph Algorithms
Shortest Path Algorithms
Network Flow Problems
Computational Geometry
String Algorithms
考察内容
程序设计技巧
算法知识
数据结构
数学功底
团队协作能力
“算法是计算机科学领域最重要的基石之一,但
却受到了国内一些程序员的冷落。”
“学习计算机算法和理论更重要,因为计算机
语言和开发平台日新月异,但万变不离其宗的
是那些算法和理论,例如数据结构、算法、编
译原理、计算机体系结构、关系型数据库原理
等等。”
“真正学懂计算机的人(不只是‘编程匠’)都对
数学有相当的造诣,既能用科学家的严谨思维
来求证,也能用工程师的务实手段来解决问
题——而这种思维和手段的最佳演绎就是“算
法”。”
“在高能物理研究方面,很多实验每秒钟都产生几个
TB的数据量。但因为处理能力和存储能力的不足,
科学家不得不把绝大部分未经处理的数据丢弃掉。
可新元素的信息很有可能就藏在我们来不及处理的
数据里面。”
“同样的,在其他任何领域里,算法都可以改变人类
的生活。例如人类基因的研究,就可能因为算法而
发明新的医疗方式。在国家安全领域,有效的算法
可能避免下一个911的发生。在气象方面,算法可以
更好地预测未来天灾的发生,以拯救生命。”
“所以,如果你把计算机的发展放到应用和数据飞速
增长的大环境下,你一定会发现,算法的重要性不
是在日益减小,而是在日益加强。”
比赛规则
独特的赛制(黑箱测试,类Moodle)
以队为单位, 每队不超过三人
高中毕业不超过五年(Collegiate)
合作—每队仅一台计算机
可携带一切纸制资料
5小时 8~12道题
排名: 完成的题目数量 使用的时间。
ACM适合于任何人,无论你有怎样的基础,成绩只取决于你后天的努力
比赛形式
读题
比较标准输出
写代码
思考
输出
测试
数据
提交
错误 – 修改源代码
正确 – 得到一个气球
训练方法
Online Judge
Compile Error
POJ
Runtime Error
ZOJ HDOJ
Topcoder
CodeForces
Time Limit Error
Wrong Answer
Accepted
推荐书籍
刘汝佳
•
•
•
清华大学出版社
《算法竞赛入门经典》
《算法竞赛入门经典:训练指南》
《算法艺术与信息学竞赛》
《算法导论》(Introduction to Algorithms)
《计算机程序设计艺术》(TAOCP)
“你还有什
么借口不好
好编程,饭
碗都要被大
妈抢了!”