ACM 中常用的算法有哪些?作者: 张俊Michael

  • 网络上流传的答案有很多,估计提问者也曾经去网上搜过。所以根据自己微薄的经验提点看法。
  • 我ACM初期是训练编码能力,以水题为主(就是没有任何算法,自己靠动脑筋能够实现的),这种题目特点是麻烦,但是不难,30-50道题目就可以了。
  • 然后可以接触一下基础的算法,我感觉搜索方向的比较不错,可以解决很多问题,深搜,广搜,然后各种剪枝能力的锻炼。
  • 搜索感觉不错了就可以去看看贪心,图论,和动态规划方向的了。图论有最短路径,最小生成树,网络流,拓扑排序等等很多,动态规划先去书上看经典例子,最长公共子序列等。各种变形的题目。
  • 数学是ACM中极具杀伤力的武器,我一向很羡慕数学好的队友,精力有限自己数学方面的算法只能说入门。这方面经典的数论,组合数学方面的比较多,计算几何是很重要的,经典模型要熟悉,最近点对,二维三维,凸包以及各种应用。
  • 数据结构方面的就比较多了,基础的堆,栈,队列,并查集,二叉查找树,红黑树,trie树,hash表等等。
  • 用C++参赛的话STL要熟悉,有时候很有帮助,里面的queue,list,map,stack等。
  • ACM到后来算法就成了工具,不断的靠自己意淫一个新的解法来解决问题是最开心的事情了。我们学校ACM一直是一届带一届的,老师只提供经济上的援助,上面的内容是我在大三当队长时教给大一的新队员的入门内容,再深的就靠每个人自己发掘了。

我年轻的时候也觉得ACM考察的是算法和coding
年纪大了以后,我明白了,ACM考察的其实是YY

有算法的题都是秒杀题,
难题都是YY一个方法,或是做一个畸形的变化转成一个有固定解的模型

一位高手对我的建议:

一般要做到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. 做过的题要记好

逻辑类:枚举、贪心、动态规划、深搜广搜
结构类:栈、并查集、堆、树、拓扑图、图论
几何类:凸包
公式类:Fibonacci,排列组合,概率
几何类的小算法很多,比如求点线关系;还有线性方程组、最大最小流;还有一些特定的算法:最短路劲、排序等。

我感觉最其中重要的是 搜索, 搜索可以对大部分问题提供通解,但会有效率问题,于是有双向广搜、A星搜索等等。在现实应用中,我觉得相对其他一些来讲,搜索也是比较有用的。

转载于:https://www.cnblogs.com/wmxl/p/4662718.html

ACM 中常用的算法有哪些? 2014-08-21 21:15 40人阅读 评论(0) 收藏...相关推荐

  1. linux分析字节序的分类及特点,计算机中的字节序详解 分类: 【Linux/Windows操作系统】 2015-01-07 21:54 97人阅读 评论(0) 收藏...

    我们都知道,内存中存储的是各种变量,各种奇葩东西,不用的变量占用不用的字长,例如在intel X86环境下,一个int占用两个字 0 1 2 3 4 5 6 7 8 9 0x30 0x31 0x32 ...

  2. 2014/12/05 随笔 2014-12-05 12:50 26人阅读 评论(0) 收藏...

    有一段时间没写博客了..发现博客出现了两篇空的博文..不知道是怎么回事..估计是CSDN眼子了 - -, 最近因为忙于辞职的事情,还是比较纠结的... 嗯 这篇文章就分享一下在写代码的时候EF闹眼子的 ...

  3. YUM更换源(1)--yum找不到安装包 2013-01-18 20:08 8687人阅读 评论(1) 收藏 举报 分类: linux(70) 公司提供的CentOS VM中,/etc/yum.r

    YUM更换源(1)--yum找不到安装包 2013-01-18 20:08 8687人阅读 评论(1) 收藏 举报 分类: linux(70) 公司提供的CentOS VM中,/etc/yum.rep ...

  4. ACM 中常用的算法有哪些?

    在网上看到别人ACM学习的心得,转载过来,源地址不记得了,当时是百度的.内容如下: 网络上流传的答案有很多,估计提问者也曾经去网上搜过.所以根据自己微薄的经验提点看法. 我ACM初期是训练编码能力,以 ...

  5. Spark中常用的算法

    Spark中常用的算法: 3.2.1 分类算法 分类算法属于监督式学习,使用类标签已知的样本建立一个分类函数或分类模型,应用分类模型,能把数据库中的类标签未知的数据进行归类.分类在数据挖掘中是一项重要 ...

  6. GIS开发中常用几何算法原理图解

    转自:OSGeo中国中心 http://www.osgeo.cn/post/ae457 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简 ...

  7. 凯立德2014秋季机车版C1204-C7K05-3323J0L懒人包 (5.0版)

    轉自:http://www.chenmoguoke.com/rjjp/gps/632.html#respond 凯立德2014秋季机车版C1204-C7K05-3323J0L懒人包 2014年11月0 ...

  8. js中常用的算法排序

    在工作中都会经常用到的一些基础算法,可以很快解决问题.这些都是在工作中总结的,希望可以帮助到大家. 一.数组乱序 arr.sort(function randomsort(a, b) {return ...

  9. 游戏开发中常用的算法

    内容会持续更新,有错误的地方欢迎指正,谢谢! 1.与数组相关的算法: 快速排序(分治思想的应用):不是任何情况都适用,数据量小的话,还不如冒泡快,但快排的确很优秀. 堆排序:可用于做游戏排行榜前多少多 ...

最新文章

  1. 远程桌面网关Apache Guacamole 发布1.0.0版本\n
  2. 一秒解决CentOS下service 功能 不能使用 bash: service: command not found
  3. C代码开发遇到的问题 变量初始化和结构体指针移动
  4. 希尔排序-Java二
  5. 南邮攻防训练平台逆向maze
  6. 【一步解决】eclipse jee左边的项目栏不见了
  7. Hadoop之Shell脚本自动启动
  8. opencv 计数后不动了 训练模型时_用OpenCV,深度学习和Python进行年龄识别
  9. GEETEST极验召集互联网大佬齐聚光谷,共同探讨交互安全问题
  10. pandas根据索引删除dataframe列
  11. AndEngine 动态更新Text文本内容时报ArrayIndexOutOfBoundsException错误的解决
  12. 各种图示的介绍及绘制(boxplot、stem)
  13. python是什么课程-Python课程包括哪些内容?
  14. 软件测试工程师简历项目经验怎么写?1000套简历模板告诉你答案
  15. PHP + AJAX实现幸运转盘抽奖
  16. java 物体移动不了总结_java9迁移注意问题总结
  17. Hive创建表的几种方式
  18. AC敏捷控制器及准入控制技术对比
  19. 自学软件测试1个半月上岸拿5个offer
  20. html清理超链接前面的黑点,吹毛求疵:解决IE6-7给链接加黑点边框的三种方案

热门文章

  1. php监听网页日志,如何用php程序监听一个不断增长的日志文件
  2. mysql 递归查找父节点_MYSQL递归查询,根据子类ID查询所有父类(最全)
  3. finalshell日志乱码问题_Tomcat乱码问题
  4. python学习-列表的操作(常用函数均会介绍)
  5. 锁相环PLL/MMCM的使用
  6. 二分法查找平方和_面试手撕系列:二分法
  7. 这门国产语言终于要发布 1.0 版本了
  8. html元素以开始标签起始,HTML文本
  9. linux禁止修 5在线阅读,linux – 如何在不重新编译内核的情况下禁用CentOS 5.3中的nf_conntrack内核模块...
  10. mysql设置作业_MySQL-作业1