ACM 入门计划

acm

本文由swellspirit贡献

ACM

• I can accept failure. but I can‘t accept not trying. Life is often compared to a marathon, but I think it is more like being a sprinter; long stretches of hard work punctuated by brief moments in which we are given the opportunity to perform at our best. If someone gets the best of me, I try not to let that happen again.(Jordan)

• “参与”与“不参与”两个问题:

– 第一:我能获奖么? – 第二:抛开荣誉,从比赛中学到的东西值得我 花费这么多时间吗?

• 答案:ref:刘汝佳 • 第一个问题比较复杂,靠个人把握 • 第二个问题答案是肯定的,但前提是要视野开阔, 不要把自己局限在一个狭小的空间之内。大家都 知道,ACM-ICPC竞赛要求选手具有一定的理论 知识和实践能力,而且在编程上要求速度和正确 性,但我认为重要的一点是,ACM-ICPC能够拍 样选手实践能力和洞察力,这相对理论和技术而 言更难培养。

• 往往,竞赛题目有着统一的外观和很强的应用背 景,而非专门为竞赛而设计,因此有着对立的体 系和相应的文件。程序设计语言,数据结构,算 法设计方法,计算理论等内容都是经典的计算机 科学分支,而高等数据、数论、组合数学、概率 论、图论、组合游戏论、人工智能、计算几何、 计算机图形学、生物信息学等内容也常见于各类 竞赛中,虽然题目只涉及各学科的一小部分内容, 但是对这些知识的理解和实践将有助于对学科进 行更全面、深入地理解。任何知识的学习都离不 开三个方面:理论、模型和实现。

• 理论部分相对比较容易把握,但要求学习 时一丝不苟,善于总结,抓住本质,主要 培养选手的洞察力。模型部分比较灵活, 富于创造性和启发性,不管是模型的建立 还是求解,都需要大量积累和思考,主要 培养选手的创造力。实现部分比较自由, 也是个人风格的体现,很难有一个固定的 标准,但有很多千人经验和模式可以参考, 主要培养选手的正确性和效率。

• 对于选手来说,ACM-ICPC只是生命中一个 很小的部分,但有心人都可以把这段经历 变得重要而有价值,准备ACM-ICPC的日子 是一段麻醉期,也是最有激情,最快乐的, 通常在这样的时期,与志同道合的人建立 的友情也是最可贵的。

• 1、ACM(1-2年级) • 2、项目(3年级) • 4、工作(google or 微软 or 百度 or QQ or IBM) • 数据结构+算法 =程序 • 计算机应用技术 or 软件工程 专业

学习方法

• 1、看书 数据结构 算法 数学 • 2、做题 PKU ,ZJU,论坛,解题报告 • 3、结合

3.初学者如何进行修炼

• 推荐两个网站

– ace.delos.com/usacogate(USACO)

• • • • • • • • • • • • • • 基本功训练 基本算法讲解、

训练 每个题做出后有讲解、代码 闯关模式 初学者推荐Chapter1-4,Chapter5-6挑战性较强 Algorithm Competition - Single Round Match(SRM) 一个月4次左右,有rating 分两个版(Div I, Div II) 参加人数众多 每次比赛后有详细的解题报告、代码 比赛结束后有Practice Room可以继续做 可以查看每一个人的代码 Forum很热闹,外国人非常乐于助人 有$哦,Room前三

– www.topcoder.com/tc

• 国内题库

– http://acm.pku.edu.cn – http://acm.zju.edu.cn – http://acm.tju.edu.cn – http://acm.hit.edu.cn – http://acm.whu.edu.cn 北京大学 浙江大学 天津大学 哈工大 武汉大学

• 国外题库

– http://acm.timus.ru 数学题较多,OI选手必做 – http://acm.uva.es 国外最大题库,人很多, Forum也很热闹 – http://acm.sgu.ru 题较难

• 建议

– 初学时做一定量的题目打基础 – 针对特定的经典算法,做相应的题目练习 – 过题数并不重要,做题数的排名也不重要

• 参考书

– 算法导论英文版

• 入门级读物

– 初读时,前面的数学部分建立基本概念即可,无需深究 – 算法的正确性证明、复杂度分析一定要扎实掌握(Master Theorem要会用,摊还分析了解) – 数据结构部分理解是关键,一些过于复杂的数据结构对于初学者 并不一定要求实现(红黑树、二项堆、Fibbonacci 堆),但基本 的数据结构一定要熟练掌握,要能熟练实现 – 图论经典算法要熟练掌握 – 动态规划要熟练掌握 – 高级部分只用选学一些

• 参考书

– 算法艺术与信息学竞赛 刘汝佳、黄亮

• 较难 适合有一定基础的同学 • 对于初学者仍然推荐第一章和第三章

• BBS

– acm.pku.edu.cn的Web Board(现在已经龙蛇混杂,最好只作为了 解新信息和讨论题目的渠道) – 各大高校BBS的算法版(分类讨论区->电脑技术->Algorithm(或 ACM、ICPC),精华区往往有很多资料和指南

• 推荐

– – – – – – – – bbs.whu.edu.cn(武大) bbs.zsu.edu.cn(中山) bbs.freecity.cn(浙大) bbs.sjtu.edu.cn(上交) bbs.hit.edu.cn(哈工大) bbs.tju.edu.cn(天大) bbs.nju.edu.cn(南大) bbs.scu.edu.cn(川大)

一般要做到50行以内的程序不用调试、100行以内的二分钟内调试 成功.acm主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练: 第一阶段: 练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己 精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉 显示器都可以把程序打 出来. 1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸包. 6.BFS、DFS,同时

熟练hash表(要熟,要灵活,代码要简) 7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 8. 调用系统的qsort, 技巧很多,慢慢掌握. 9. 任意进制间的转换

ACM练习建议 转

• 第二阶段: 练习复杂一点,但也较常用的算法。 如: 1. 二分图匹配(匈牙利),最小路径覆盖 2. 网络流,最小费用流。 3. 线段树. 4. 并查集。 5. 熟悉动态规划的各个典型:LCS、最长递增子串、三角 剖分、记忆化dp 6.博弈类算法。博弈树,二进制法等。 7.最大团,最大独立集。 8.判断点在多边形内。 9. 差分约束系统. 10. 双向广度搜索、A*算法,最小耗散优先.

• 第三阶段: 前两个阶段是打基础,第三阶段是锻炼在比赛中可以快 速建立模型、想新算法 。这就要平时多做做综合的题型了。 1. 把oibh上的论文看看(大概几百篇的,我只看了一点点, 呵呵)。 2. 平时扫扫zoj上的难题啦,别老做那些不用想的题.(中大 acm的版主经常说我挑简单的来 做:-P ) 3. 多参加网上的比赛,感受一下比赛的气氛,评估自己的 实力. 4. 一道题不要过了就算,问一下人,有更好的算法也打一 下。 5. 做过的题要记好 :-)

我们的游戏规则

• 专题讲座

– 题目类型 数据结构 搜索 动态规划 图论 数学

• 模拟赛+选拔赛 • 我们的时间安排

• You can Shine

时间: 2024-10-25 19:57:02

ACM 入门计划的相关文章

ACM进阶计划

转自 http://www.cnblogs.com/zxhl/p/4690748.html ACM进阶计划ACM队不是为了一场比赛而存在的,为的是队员的整体提高.大学期间,ACM队队员必须要学好的课程有:lC/C++两种语言l高等数学l线性代数l数据结构l离散数学l数据库原理l操作系统原理l计算机组成原理l人工智能l编译原理l算法设计与分析除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的.以下学习计划每学期中的内容不分先后顺序,虽说是为立志于学习ACM的同学列的知识清单

[转]ACM进阶计划

ACM进阶计划  大学期间,ACM队队员必须要学好的课程有: lC/C++两种语言 l高等数学 l线性代数 l数据结构 l离散数学 l数据库原理 l操作系统原理 l计算机组成原理 l人工智能 l编译原理 l算法设计与分析 除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的. 以下学习计划每学期中的内容不分先后顺序,虽说是为立志于学习ACM的同学列的知识清单,但内容不限于ACM的知识.英语之类与专业相距较远的课程请自行分配时间,这里不再列举.  大一上学期: 必学: 2.简

ACM入门指南

什么是ACM? 想必打开这篇博客的人已经知道什么是ACM了吧,如果不知道,请自行百度或者谷歌 搞ACM需要学习什么知识? 搜索引擎 这里不是让你设计一个搜索引擎,而是让你学会正确使用搜索引擎,当你有任何不解的时候(包括阅读下文),问问谷歌或者百度,这不只是ACM才需要的技能. 一门编程语言 虽然现在编程语言总类繁多,有些OJ也支持多种语言,不过C++还是搞ACM不二的选择,另外最好也学会使用java,因为无论在什么地方,什么国家,什么网站的比赛,C++和java都是支持的.ACM是算法的比拼,所

acm入门 杭电1001题 有关溢出的考虑

最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n. Input The input will consist of a series of integers n, one integer per line Output For each case, output SUM(n) in one line

iOS新手入门计划

入门任务 了解编程的主要概念,熟悉开发环境 1,安装配置开发环境 耗时:8-16小时 如果超出时间,请寻求帮助. 2,新建第一个hello world应用(story board) 耗时:4小时 放置UILabel在上面 3,熟悉story board基本操作(放置简单的控件) 耗时:8小时 UILabel,UIImageView,UIButton 设置控件的属性 4,熟悉story board基本操作 耗时:8小时 outlet和action 加法计算器 5,数据类型,以及控制台应用 耗时:8

ACM入门 训练方法

ppt:http://pan.baidu.com/s/1eQBzFqE 入门知识汇总: 经典DP: LIS LCS, 状态压缩DP 区间DP 图论:MST , 最短路三种算法(dijkstra , bellman ford, floyd ),最大流, 双连通分量(点双连通,边双连通,强连通) 数学:质因数分解,筛素数,数论的常用结论 数据结构: 线段树,树状数组,字典树,kmp,哈希,平衡树(treap 或者 splay) 搜索:普通dfs  bfs , 双向广搜, 常用的剪枝策略. 算法的中英

python入门计划——1

既然决定开始学习python,就要先了解一下python. python是什么 Python是一种跨平台的计算机程序设计语言,是一种面向对象的动态类型语言.最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发.现在python的运用越来越广泛,python的功能也越来越强大. python作为一种高级的开发语言,可以自动将内容转化为字节码,再由低级语言将字节码转化为机器码,从而被计算机直接识别. 与Java语言相比,Java的执行

ACM入门

1.给n个数字,将它们重新排序得到一个最大的数字 例子 4123 124 56 90--------------90561241235123 124 56 90 9------------9905612412359 9 9 9 9---------------------99999 知识:用string数组保存这些数据  比如 如果'90'+'123'='90123'>'12390'='123'+'90'` 则按90和123进行排序 思路:贪心算法:最大的数字

ACM入门小总结

1.scanf和printf所用的时间大大少于cin和cout消耗的时间. 2.Gets()函数用于读取一整行的函数,可以无限读取,不会判断上限,遇到回车结束,慎用. Getchar()函数可以一次读取一个字符,这个字符可以是回车.Putchar()与之对应,输出一 个字符. 3.EOF是一个预定义的常量,等于-1. 4.Strcmp()和compare()都是用来比较两个字符串的,相同时返回0,前者比后者大返回1(strcmp返回正数),前者比后者小返回-1(strcmp返回负数). 5.C+