一、数论算法 1.求两数的最大公约数 2.求两数的最小公倍数 3.素数的求法 A.小范围内判断一个数是否为质数: B.判断longint范围内的数是否为素数(包含求50000以内的素数表):

二、图论算法

1.最小生成树

A.Prim算法: B.Kruskal算法:(贪心) 按权值递增顺序删去图中的边,若不形成回路则将此边加入最小生成树。

2.最短路径 A.标号法求解单源点最短路径: B.Floyed算法求解所有顶点对之间的最短路径: C. Dijkstra 算法:

3.计算图的传递闭包

4.无向图的连通分量 A.深度优先 B 宽度优先(种子染色法)

5.关键路径 几个定义: 顶点1为源点,n为汇点。 a. 顶点事件最早发生时间Ve[j], Ve [j] = max{ Ve [j] + w[I,j] },其中Ve (1) = 0; b. 顶点事件最晚发生时间 Vl[j], Vl [j] = min{ Vl[j] – w[I,j] },其中 Vl(n) = Ve(n); c. 边活动最早开始时间 Ee[I], 若边I由<j,k>表示,则Ee[I] = Ve[j]; d. 边活动最晚开始时间 El[I], 若边I由<j,k>表示,则El[I] = Vl[k] – w[j,k]; 若 Ee[j] = El[j] ,则活动j为关键活动,由关键活动组成的路径为关键路径。 求解方法: a. 从源点起topsort,判断是否有回路并计算Ve; b. 从汇点起topsort,求Vl; c. 算Ee 和 El;

6.拓扑排序 找入度为0的点,删去与其相连的所有边,不断重复这一过程。 例 寻找一数列,其中任意连续p项之和为正,任意q 项之和为负,若不存在则输出NO.

7.回路问题 Euler回路(DFS) 定义:经过图的每条边仅一次的回路。(充要条件:图连同且无奇点) Hamilton回路 定义:经过图的每个顶点仅一次的回路。 一笔画 充要条件:图连通且奇点个数为0个或2个。

9.判断图中是否有负权回路 Bellman-ford 算法 x[I],y[I],t[I]分别表示第I条边的起点,终点和权。共n个结点和m条边。

10.第n最短路径问题 *第二最短路径:每举最短路径上的每条边,每次删除一条,然后求新图的最短路径,取这些路径中最短的一条即为第二最短路径。 *同理,第n最短路径可在求解第n-1最短路径的基础上求解。

三、背包问题 *

部分背包问题可有贪心法求解:计算Pi/Wi 数据结构: w[i]:第i个背包的重量; p[i]:第i个背包的价值;

1.0-1背包:  每个背包只能使用一次或有限次(可转化为一次): A.求最多可放入的重量。 B.求可以放入的最大价值。 F[I,j]  为容量为I时取前j个背包所能获得的最大价值。 F [i,j] = max { f [ i – w [ j ], j-1] + p [ j ], f[  i,j-1]  } C.求恰好装满的情况数。

2.可重复背包 A求最多可放入的重量。 F[I,j]为前i个物品中选择若干个放入使其体积正好为j的标志,为布尔型。 状态转移方程为 f[I,j]  = f [ I-1, j – w[I]*k ] (k=1.. j div w[I]) B.求可以放入的最大价值。 f[i,j] = max { f  [i- k*w[j], j-1] + k*p[j] } (0<=k<= i div  w[j]) 其中f[i,j]表示容量为i时取前j种背包所能达到的最大值。 C.求恰好装满的情况数。 Ahoi2001  Problem2 求自然数n本质不同的质数和的表达式的数目。 思路一,生成每个质数的系数的排列,在一一测试,这是通法。 思路二,递归搜索效率较高

思路三:可使用动态规划求解 四、排序算法 1.快速排序: B.插入排序: 思路:当前a[1]..a[i-1]已排好序了,现要插入a[i]使a[1]..a[i]有序。 C.选择排序: D.  冒泡排序 E.堆排序: F.  归并排序 G.基数排序 思想:对每个元素按从低位到高位对每一位进行一次排序 五、高精度计算 高精度数的定义: 1.高精度加法 2.高精度减法 3.高精度乘以低精度 4.高精度乘以高精度 5.高精度除以低精度 6.高精度除以高精度

六、 树的遍历

1.已知前序中序求后序 2.已知中序后序求前序 3.已知前序后序求中序的一种

七  进制转换 1任意正整数进制间的互化 除n取余 2实数任意正整数进制间的互化 乘n取整 3负数进制: 设计一个程序,读入一个十进制数的基数和一个负进制数的基数,并将此十进制数转换为此负进制下的数:-R∈{-2,-3,-4,....-20} 八  全排列与组合的生成 1排列的生成:(1..n) 2组合的生成(1..n中选取k个数的所有方案)

九.查找算法 1折半查找 2树形查找 二叉排序树:每个结点的值都大于其左子树任一结点的值而小于其右子树任一结点的值。 查找

十、贪心 *会议问题 (1)  n个活动每个活动有一个开始时间和一个结束时间,任一时刻仅一项活动进行,求满足活动数最多的情况。 解:按每项活动的结束时间进行排序,排在前面的优先满足。 (2)会议室空闲时间最少。 (3)每个客户有一个愿付的租金,求最大利润。 (4)共R间会议室,第i个客户需使用i间会议室,费用相同,求最大利润。 十一、回溯法框架 1.  n皇后问题 2.Hanoi Tower h(n)=2*h(n-1)+1 h(1)=1

十二、DFS框架

十三、BFS框架

十五、数据结构相关算法 1.链表的定位函数

2.单链表的插入操作 3.单链表的删除操作 4.双链表的插入操作(插入新结点q) 5.双链表的删除操作

ACM算法的更多相关文章

  1. ACM,算法

    ACM,算法 描述 最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数.他已经知道了第一个小光棍数是471,471的三次方是104487111,现在 ...

  2. ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)

    ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)

  3. acm算法模板(5)

    STL 中 sort 函数用法简介 做 ACM 题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的 O(n^2) 排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错. ST ...

  4. acm算法模板(1)

    1. 几何 4 1.1 注意 4 1.2 几何公式 4 1.3 多边形 6 1.4 多边形切割 9 1.5 浮点函数 10 1.6 面积 15 1.7 球面 16 1.8 三角形 17 1.9 三维几 ...

  5. ACM算法整理(不断补充ing)

    动态规划 1.背包问题 (1)01背包 ,n) DFR(v,V,C[i]) F[v]=max(F[v],F[v-C[i]]+W[i]); } //初始化时 //若背包不一定装满F全初始化为0 //若装 ...

  6. ACM算法锦集

    一:知识点 数据结构: 1,单,双链表及循环链表 2,树的表示与存储,二叉树(概念,遍历)二叉树的 应用(二叉排序树,判定树,博弈树,解答树等) 3,文件操作(从文本文件中读入数据并输出到文本文 件中 ...

  7. ACM算法模板整理

    史诗级ACM模板整理 基本语法 字符串函数 istream& getline (char* s, streamsize n ); istream& getline (char* s, ...

  8. ACM算法总结及刷题参考

    参考:http://bbs.byr.cn/#!article/ACM_ICPC/11777 OJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,p ...

  9. acm算法模板(2)

    数学问题: 1.精度计算——大数阶乘 2.精度计算——乘法(大数乘小数) 3.精度计算——乘法(大数乘大数) 4.精度计算——加法 5.精度计算——减法 6.任意进制转换 7.最大公约数.最小公倍数 ...

随机推荐

  1. android 中国通信乱码问题

    1.要解决中文乱码问题.首先得了解什么是字符编码 计算机要处理各种字符,就须要将字符和二进制内码相应起来,这样的相应关系就是字符编码. 要制定字符编码首先要确定字符集,并将 字符集内的字符排序.然后和 ...

  2. 我理解设计模式C++实现观察者模式Observer Pattern

    概述: 近期中国股市起起伏伏,当然了起伏就用商机,小明发现商机后果断想入市,买入了中国证券,他想在电脑client上,网页上,手机上,iPad上都能够查看到该证券的实时行情,这样的情况下我们应该怎么设 ...

  3. Android 自己定义ScrollView ListView 体验各种纵向滑动的需求

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38950509.本文出自[张鸿洋的博客] 1.概述 群里的一个哥们有个需求是这种: ...

  4. 利用HttpOnly来防御xss攻击

    xss的概念就不用多说了,它的危害是极大的,这就意味着一旦你的站点出现xss漏洞,就能够运行随意的js代码,最可怕的是攻击者利用js获取cookie或者session劫持,假设这里面包括了大量敏感信息 ...

  5. 【C语言的日常实践(十四)】constkeyword详细解释

    const是C语言keyword,它定义一个变量不同意变更.使用const在一定程度上,可以提高节目的安全性和可靠性.其他.解const的作用,在看别人的代码时,对理解对方的程序有一定帮助. 1.co ...

  6. Maven学习笔记(三) :Maven使用入门

    编写POM:      Maven项目的核心是pom.xml.POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描写叙述项目怎样构建,声明项目依赖,等等.   ...

  7. [LeetCode258] Add Digits 非负整数各位相加

    题目: Given a non-negative integer num, repeatedly add all its digits until the result has only one di ...

  8. ArcSDE SDK For Java二次开发介绍、演示样例

    在一个工作中,遇到了须要java后台来查询ArcGIS 中用到的Oracle数据库空间数据,因为对ArcGIS空间数据首次接触,仅仅知道Oracle能够使用ST_GEOMETRY字段存储,例如以下图 ...

  9. GitLab一键式安装bitnami

    https://bitnami.com/stack/gitlab/installer https://bitnami.com/redirect/to/96764/bitnami-gitlab-8.5. ...

  10. javascript实现函数的默认參数值方法

    近期在学python,得益于python中的decorator思路,想到在javascript中參数是不能定义默认值的,可是能够通过decorator给它模拟出来,话不多说,上代码 <!DO ...