ACM培训计划详解.docx
- 文档编号:5952720
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:22
- 大小:29.29KB
ACM培训计划详解.docx
《ACM培训计划详解.docx》由会员分享,可在线阅读,更多相关《ACM培训计划详解.docx(22页珍藏版)》请在冰豆网上搜索。
ACM培训计划详解
转载ACM训练计划
看完人家的博客,发现任重道远。
。
。
一位高手对我的建议:
一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的
,主要时间是花在思考算法上,不是花在写程序与debug上。
下面给个计划你练练:
第一阶段:
练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,
因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打
出来.
1.最短路(Floyd、Dijstra,BellmanFord)
2.最小生成树(先写个prim,kruscal要用并查集,不好写)
3.大数(高精度)加减乘除
4.二分查找.(代码可在五行以内)
5.叉乘、判线段相交、然后写个凸包.
6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简)
7.数学上的有:
辗转相除(两行内),线段交点、多角形面积公式.
8.调用系统的qsort,技巧很多,慢慢掌握.
9.任意进制间的转换
第二阶段:
练习复杂一点,但也较常用的算法。
如:
1.二分图匹配(匈牙利),最小路径覆盖
2.网络流,最小费用流。
3.线段树.
4.并查集。
5.熟悉动态规划的各个典型:
LCS、最长递增子串、三角剖分、记忆化dp
6.博弈类算法。
博弈树,二进制法等。
7.最大团,最大独立集。
8.判断点在多边形内。
9.差分约束系统.
10.双向广度搜索、A*算法,最小耗散优先.
第三阶段:
前两个阶段是打基础,第三阶段是锻炼在比赛中可以快速建立模型、想新算法
。
这就要平时多做做综合的题型了。
1.把oibh上的论文看看(大概几百篇的,我只看了一点点,呵呵)。
2.平时扫扫zoj上的难题啦,别老做那些不用想的题.(中大acm的版主经常说我挑简单的来
做:
-P)
3.多参加网上的比赛,感受一下比赛的气氛,评估自己的实力.
4.一道题不要过了就算,问一下人,有更好的算法也打一下。
5.做过的题要记好:
-)
(一)
不可能都完全记住那么多的算法.
常用算法,拿过来就可以写出来
不常用的,拿起书来,看10分钟,就能理解算法(因为以前记过).
对以前没有记过的算法,就不好说了,难的可能要研究好几天.
这样就可以了.
应该熟练掌握的常用的算法应该有:
各种排序算法(插入排序、冒泡排序、选择排序,快速排序,堆排序,归并排序)
线性表(一般的线性表,栈,队列)的插入和删除
二叉树的遍历(前序,中序,后序)
图的遍历(深度优先,广度优先)
二分法查找,排序二叉树,Hash查找(处理冲突的方法)。
(二)
分析一个东西,你可以用不同的眼光去看待,有很多时候,就跟自己生活一样,觉得小时候看待问题很幼稚,现在看问题全面了,而且方式不一样了,为什么,就是成长吧,就跟这个一样的,你对算法,比如写一个程序,可能直接写很简单,可是可以有一些有趣的方式,比如通过什么样来表达,怎么样更高效..等等吧
(三)
于大学里把基本的专业课学扎实就ok,如:
数据结构,离散,操作系统等。
碰到一些基本的数据结构和算法,如查找排序要根据原理马上能写出相应的代码就行了,我个人是这样理解的,对于更深层次的东西,也是建立在自己熟练的基础之上的吧
(四)
算法与数据结构考验试题精析》第2版机械工业出版社
如果你想练习的话,这里有N多的题可以来练习,但实际中能用到的比较少,除非搞一些高端的玩意,不过平时也可以在自己的项目中结合使用
(五)
数据结构在平时可能用不上,但数据结构可以培养你程序时如果注意效率的意识,一个学过数据结构的人和一个没有学过数结构的人写出来的程序可能在效率上有差别。
(六)
搞ACM需要的掌握的算法.
要注意,ACM的竞赛性强,因此自己应该和自己的实际应用联系起来.
适合自己的才是好的,有的人不适合搞算法,喜欢系统架构,因此不要看到别人什么就眼红,
发挥自己的长处,这才是重要的.
同时由于个人练习的时候可能有些偏向性,可能上面的总结不是很全,还请大家提出和指正,而且由于ACM的题目中专门针对某个算法的题目可能比较少出现,所以上面的分类中的题有可能有多种解法或者是一些算法的综合,这都不会影响大家做题,希望练习的同学能够认真,扎实地训练,做到真正的理解算法,掌握算法.同时在论坛上还有许多前辈的分类,总结,大家也可以按自己的情况采用.注意FTP上有很多的资料,希望大家好好地利用.
如果同学能在明年暑假前能掌握上面大部分算法,那你也基本上达到了训练的目的,到暑假的时候你就可以选择自己比较喜欢的方面进行加深和强化,而且同学们不要觉得看算法的证明是很麻烦的事,这可以加强你的思维能力,这在ACM中也很重要.同时也希望老队员能帮助我整理习题和题目分类.同时ACM的题目是没有范围的,只能在平时中多积累多练习,多比别人多努力一点,你就会比别人多一线希望.
先掌握搜索,动态规划,贪心这些思想方法
然后学习各种技巧
ACM基本算法分类
ACM基本算法分类、推荐学习资料和配套pku习题一.动态规划
参考资料:
刘汝佳《算法艺术与信息学竞赛》《算法导论》
推荐题目:
简单
中等,经典TSP问题
中等,状态压缩DP
中等
中等,树形DP。
可参考《算法艺术与信息学竞赛》动态规划一节的树状模型
中等,《算法艺术与信息学竞赛》中的习题
中等,《算法艺术与信息学竞赛》中的习题
中等,《算法艺术与信息学竞赛》中的习题
中等,递推
中等,需要减少冗余计算
中等,四边形不等式的简单应用
较难,状态压缩DP,《算法艺术与信息学竞赛》中有解答
较难,《算法艺术与信息学竞赛》中有解答
较难,需要配合数据结构优化(我的题目^_^)
较难,写起来比较麻烦
较难
难,树形DP
难,状态压缩DP,题目很有意思
难
非常难
二.搜索
参考资料:
刘汝佳《算法艺术与信息学竞赛》
推荐题目:
简单,深搜入门题
中等,广搜
中等,广搜
较难,广搜
难,IDA*,迭代加深搜索,需要较好的启发函数
难,可重复K最短路,A*。
可参考解题报告:
难,深搜剪枝,《算法艺术与信息学竞赛》中有解答
难,《算法艺术与信息学竞赛》习题
难,深搜
较难,《算法艺术与信息学竞赛》中有解答
很难
三.常用数据结构
参考资料:
刘汝佳《算法艺术与信息学竞赛》
《算法导论》
线段树资料:
树状数组资料
关于线段树和树状数组更多相关内容可在网上搜到
后缀数组资料
推荐题目
较难,线段树应用,《算法艺术与信息学竞赛》中有解答
简单,线段树应用矩形面积并,《算法艺术与信息学竞赛》中有解答
较难,线段树应用,可参考解题报告
难,二维树状数组。
中等,线段树应用。
难,堆的应用,《算法艺术与信息学竞赛》中有解答
中等,左偏树,二项式堆或其他可合并堆的应用。
左偏树参考 http:
//www.nist.gov/dads/HTML/leftisttree.html
二项式堆参见《算法导论》相关章节
中等,并查集
中等,字典树
较难,多串匹配树
参考:
难,后缀数组
较难,最长公共子串,经典问题,后缀数组
很难,后缀数组
可参考解题报告
很难,数据结构综合运用
四.图论基础
参考资料:
刘汝佳《算法艺术与信息学竞赛》《算法导论》《网络算法与复杂性理论》谢政
推荐题目:
简单,欧拉路
中等,无向图割边
较难,无向图双连通分支
中等,最小度限制生成树,《算法艺术与信息学竞赛》中有解答
中等,最小比率生成树,《算法艺术与信息学竞赛》中有解答
简单,最短路问题
中等,差分约束系统,Bellman-Ford求解,《算法艺术与信息学竞赛》中有解答
简单,Bellman-Ford
中等,网络流
较难,网络流
中等,二部图最大匹配
较难,二部图最大匹配
中等,二部图最大权匹配
KM算法参考《网络算法与复杂性理论》
较难,二部图最大权匹配
中等,LCA(最近公共祖先)问题
参考Tarjan'sLCAalgorithm《算法导论》第21章习题
较难,2-SAT问题
参考:
较难,2-SAT问题
较难,最小树形图
参考《网络算法与复杂性理论》中朱-刘算法
五.数论及组合计数基础
简单,素数判定,大数分解
参考算法导论相关章节
较难,Burnside引理
中等,解模方程组
中等,经典问题,波利亚定理
难,极好的题目,Burnside引理+模线性方程组
较难,需要数学方法,该方法在《具体数学》第七章有讲
简单,矩阵快速乘法
主流算法:
1.搜索 //回溯
2.DP(动态规划)
3.贪心
4.图论 //Dijkstra、最小生成树、网络流
5.数论 //解模线性方程
6.计算几何 //凸壳、同等安置矩形的并的面积与周长
7.组合数学 //Polya定理
8.模拟
9.数据结构 //并查集、堆
10.博弈论
1、排序
1423,1694,1723,1727,1763,1788,1828,1838,1840,2201,2376,2377,2380,1318,1877,
1928,1971,1974,1990,2001,2002,2092,2379,
1002(需要字符处理,排序用快排即可)1007(稳定的排序)2159(题意较难懂)
22312371(简单排序)2388(顺序统计算法)2418(二叉排序树)
2、搜索、回溯、遍历
1022111111181129119015621564157316552184222522432312236223782386
1010,1011,1018,1020,1054,1062,1256,1321,1363,1501,1650,1659,1664,1753,2078,2083,2303,2310,2329
简单:
1128,1166,1176,1231,1256,1270,1321,1543,1606,1664,1731,1742,1745,1847,
1915,1950,2038,2157,2182,2183,2381,2386,2426,
不易:
1024,1054,1117,1167,1708,1746,1775,1878,1903,1966,2046,2197,2349,
推荐:
1011,1190,1191,1416,1579,1632,1639,1659,1680,1683,1691,1709,1714,1753,
1771,1826,1855,1856,1890,1924,1935,1948,1979,1980,2170,2288,2331,2339,
2340,1979(和迷宫类似)1980(对剪枝要求较高)
3、历法
10082080(这种题要小心)
4、枚举
1012,1046,1387,1411,2245,2326,2363,2381,
1054(剪枝要求较高),1650(小数的精度问题)
5、数据结构的典型算法
容易:
1182,1656,2021,2023,2051,2153,2227,2236,2247,2352,2395,
不易:
1145,1177,1195,1227,1661,1834,
推荐:
1330,1338,1451,1470,1634,1689,1693,1703,1724,1988,2004,2010,2119,2274,
1125(弗洛伊德算法),2421(图的最小生成树)
6、动态规划
1037Adecorativefence、
1050TotheMax、
1088滑雪、
1125StockbrokerGrapevine、
1141BracketsSequence、
1159Palindrome、
1160PostOffice、
1163TheTriangle、
1458CommonSubsequence、
1579FunctionRunFun、
1887TestingtheCATCHER、
1953WorldCupNoise、
2386LakeCounting
7、贪心
1042,1065,1230,1323,1477,1716,1784,13281755(或用单纯形方法),2054,1017,1328,
1862,1922,2054,2209,2313,2325,2370。
8、模拟
容易:
1006,1008,1013,1016,1017,1169,1298,1326,1350,1363,1676,1786,1791,1835,
1970,2317,2325,2390
不易:
1012,1082,1099,1114,1642,1677,1684,1886,12811928208321412015
9、递归
1664
10、字符串处理
1488,1598,1686,1706,1747,1748,1750,1760,1782,1790,1866,1888,1896,1951,2003,
2121,2141,2145,2159,2337,2359,2372,2406,2408,1016105111261318157219171936
2039208321362271231
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ACM 培训 计划 详解