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
ACM 入门计划的更多相关文章
- ACM进阶计划
ACM进阶计划ACM队不是为了一场比赛而存在的,为的是队员的整体提高.大学期间,ACM队队员必须要学好的课程有:lC/C++两种语言l高等数学l线性代数l数据结构l离散数学l数据库原理l操作系统原理l ...
- [转]ACM进阶计划
ACM进阶计划 大学期间,ACM队队员必须要学好的课程有: lC/C++两种语言 l高等数学 l线性代数 l数据结构 l离散数学 l数据库原理 l操作系统原理 l计算机组成原理 l人工智能 l编译原 ...
- 大牛对ACM入门菜鸟的一些话
首先就是我为什么要写这么一篇日志.原因很简单,就是因为前几天有个想起步做ACM人很诚恳的问我该如何入门.其实就现在而言,我并不是很想和人再去讨论这样的话题,特别是当我发现我有很多的东西要学的时候,我实 ...
- ACM入门步骤(一)
一般的入门顺序: 0. C语言的基本语法(或者直接开C++也行,当一个java选手可能会更受欢迎,并且以后工作好找,但是难度有点大),[参考书籍:刘汝佳的<算法竞赛入门经典>,C++入门可 ...
- ACM入门指南
本文已经转移到了:http://harryguo.me/2015/11/03/ACM-%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/ 什么是ACM? 想必打开这篇博客的人已 ...
- acm入门 杭电1001题 有关溢出的考虑
最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...
- ACM入门之OJ~
所谓OJ,顾名思义Online Judge,一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等.用户程序执行的结果将被Online ...
- 杭电OJ:1089----1096(c++)(ACM入门第一步:所有的输入输出格式)
1089:输入输出练习的A + B(I) 问题描述 您的任务是计算a + b. 太容易了?!当然!我专门为ACM初学者设计了这个问题. 您一定已经发现某些问题与此标题具有相同的名称,是的,所有这些问题 ...
- ACM入门
1.给n个数字,将它们重新排序得到一个最大的数字 例子 4123 124 56 90--------------90561241235123 124 56 90 9------------990561 ...
随机推荐
- c# socket udp广播
一.广播消息 由于Tcp是有连接的,所以不能用来发送广播消息.发送广播消息,必须用到Udp,Udp可以不用建立连接而发送消息.广播消息的目的IP地址是一种特殊IP地址,称为广播地址.广播地址由IP地址 ...
- Unity判断网络连接类型
使用NetworkReachability判断手机游戏当前的网络连接类型,是wifi还是234G using UnityEngine; using System.Collections; public ...
- decimal ? 含义
例如: decimal ? je = zfje; 意思是 将 JE赋值为 ZFJE , 并且允许 JE 为 NULL 值 这时JE为引用类型
- java提高篇(七)-----详解内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...
- synchronized与static synchronized 差异
1.synchronized与static synchronized 差异 synchronized是对类的当前实例进行加锁,防止其它线程同一时候訪问该类的该实例的全部synchroniz ...
- 基于高性能的硬件配置Nginx
Nginx高级配置将涉及硬件,假设你配置不好,直接使各种性能下降. 我这里总结一下.怎样依据server的硬件设备来配置Nginx. 见下图: 低訪问量的网络,能够这样配置. 标准的网络訪问量,能够这 ...
- 摆弄【Nhibernate 协会制图--导乐陪伴分娩】
现有两个实体,Dog和 Master,映射到数据库表中如上图所看到的.一个Dog仅仅同意相应一个Master,但一个Master能够有多个Dog.我们在查询Dog的时候.往往还须要知道其主人Maste ...
- Effective C++ -- 继承和面向对象设计
32.确保你的public继承了模is-a关系 public继承意味着is-a关系(里氏替换原则),一切适用于基类也适用于派生类. 矩形继承正方形问题: 可实施与矩形的操作无法实施与正方形 在编程领域 ...
- Dapper的使用
轻量型ORM框架Dapper的使用 /// <summary> /// 查询操作 /// </summary> /// <typeparam name="T&q ...
- OpenCV视频播放方法
OpenCV视频播放方法 今天折腾了一下OpenCV的视频播放功能,希望能对项目又帮助- 代码还是非常easy的,仅仅是之前遇到点小麻烦,找不到cvCreateFileCapture函数的定义,花了一 ...