
ACM
文章平均质量分 68
selous
编程之久除了算法和数据结构,什么也不属于我们。
展开
-
knapsack problems(背包问题)
背包问题定义我们有nn种物品,物品jj的重量为wjw_j,价格为pjp_j。 我们假定所有物品的重量和价格都是非负的。背包所能承受的最大重量为W。 如果限定每种物品只能选择0个或1个,则问题称为0-1背包问题 可以用公式表示为: 最大化:∑nj=1xjpj\sum_{j=1}^{n}x_jp_j 受限于:∑nj=1xjwj≤W\sum_{j=1}^nx_jw_j \leq W 如果限定物原创 2017-02-16 20:07:40 · 1666 阅读 · 0 评论 -
广度优先遍历解决最短路问题
BFS(广度优先遍历)在一般的带权图中是不能解决最短路问题,了解BFS的都知道,BFS是根据节点到源节点之间的节点数遍历的,也就是先访问离源节点节点数最少的点。要使得BFS能计算最短路径,需要图结构满足所有的权值相等。否则应该使用dijistra算法去解决最短路。权值相等的这种情况,在解决迷宫问题的时候有很好的表现能力。因为迷宫问题满足下面几个特点: 1.迷宫采用矩阵的方式去储存的时候,矩阵中的每原创 2017-03-15 20:39:42 · 5734 阅读 · 2 评论 -
凸多边形最优三角剖分(polygon decomposition)
题目来源:http://blog.youkuaiyun.com/liuqiyao_01/article/details/8765812 100个动规方程的第五个 思路来源:http://www.cnblogs.com/Jason-Damon/p/3298172.html 就搜了一下这个题目,看到了上述给的思路。上述思路的动规方程涉及到vi−1v_{i-1},我觉得这个在思考的时候是不证明能考虑到的,所以我的思原创 2017-03-14 10:54:14 · 2522 阅读 · 0 评论 -
图论——二分匹配
主要的知识细节都是从这篇博客看到的:http://www.renfei.org/blog/bipartite-matching.html无权二分图增广路:从一个未匹配的节点出发,交替经过匹配的路径和未匹配路径,直到下一个节点是未匹配点为止。举个例子:如图所示,1和c匹配,2和a匹配。那么对于节点3开始的增广路径即为3->a->2 。。。啊呀,这个例子不好,增广路径就是3->b。。。基础知识你们还是参原创 2017-03-09 12:57:27 · 906 阅读 · 0 评论 -
矩阵快速幂
贴一些博客留着之后学习用基础讲解: http://www.cnblogs.com/yan-boy/archive/2012/11/29/2795294.html http://blog.youkuaiyun.com/wust_zzwh/article/details/52058209 题目总结: http://blog.youkuaiyun.com/chenguolinblog/article/details/10原创 2017-03-18 17:36:36 · 380 阅读 · 0 评论 -
强连通性Tarjan算法和LCA
其实tarjan算法提出的思想就是DFS深度优先遍历,在遍历的过程中记录某些变量的值,来解决相关问题,下面两个经典的问题都能通过tarjan的思想去解决。在此表达对Robert Tarjan的崇高敬意。连通基础思想就是通过DFS,在深度优先遍历的过程中,记录每个节点上对应的值,在编程中我们需要记录的每个节点的值有DFN(访问的次序),inStack(是否在栈中,引入的栈是做什么的,下面会演示),LO原创 2017-03-09 22:21:43 · 1492 阅读 · 0 评论 -
图论——欧拉回路
定义欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,并且可以行遍图中每个顶点的回路。 一个图有欧拉回路的充分必要条件是这个图是连通的且每一个顶点的度都是偶数。 一个图有欧拉路径的充分必要条件这个图是连通的且仅有两个顶点的度是奇数。欧拉图判断无向图//========================================================================原创 2017-03-05 19:55:54 · 1144 阅读 · 0 评论 -
图论——最短路径
算法Dijkstra算法是用于计算一个节点到其他所有节点的最短路径。其中心思想是以起点为中心向四周贪心扩散,每次都去最小的边,以找到最短路径。注意dijkstra算法不能出现负权值的边。基本思想1.提出问题,如图,以1为起点,求到其余个点的最短距离。2.寻找下一个节点。如图1为起点,那么对于其相连的两个节点2和3的权值分别是2和5,由此可知1到节点2的最小距离必为2。(因为如果不是直接到达2,那么结原创 2017-03-04 23:01:21 · 847 阅读 · 0 评论 -
图论——最小生成树
最小生成树的概念,应该都是知道的。那么主要就是如何实现的问题。最小生成树惯用的实现方法是克鲁斯卡尔算法。其实现依赖于并查集的思想,如果不知道什么是并查集可以看我的这篇博客:http://blog.youkuaiyun.com/selous/article/details/59478174 下面直接实现最小生成树,用csp的交通规划这题做例题吧。 问题描述: 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷原创 2017-03-02 21:38:08 · 754 阅读 · 0 评论 -
数据结构——线段树
开个头 下一步写这个。原创 2017-02-22 18:15:04 · 494 阅读 · 0 评论 -
并查集——Union-Find算法
基础讲解并查集是一个相对简单的概念。 实际应用场景:1~n个人,其中部分人相互认识,如果2和3 认识,3和4 认识,那么2和4就属于同一个圈子里面,问1~n个人中一共有几个圈子。如果n=8,那么:数据初始化合并数据如果1和2认识,那么1,2属于一个圈子,3和4认识,那么3,4属于一个圈子,如果2和3认识,那么1234属于同一个圈子。所以只需要将圈子合并既可以完成上述的要求功能,最适合的数据结构就原创 2017-03-02 12:45:54 · 715 阅读 · 0 评论 -
数据结构——字符串处理
未完成KMP算法KMP思想1.如图所示,在主串s中搜素匹配模式串p的子串的位置时,主串的位置i与模式串的位置j并不匹配。 2.在如上图的不匹配的情况下,就需要将模式串p后移。传统的方法是将模式串p整体后移一个单位。从p的第一个字符开始重新进行比较。 3.上面方法是存在大量冗余的,而KMP算法,旨在利用前一次匹配的结果,在不匹配的情况下,可以直接向后移动若干位,而不是一位。这种思想可以等价于主原创 2017-02-23 22:06:26 · 1488 阅读 · 0 评论 -
动态规划
数位DP数位DP描述的是这样一类问题,在区间[a,b]中,求满足某个条件的数的个数。在空间小的时候,我们可以采用遍历的方式,但是在数据量太大,而且计算较复杂的时候,遍历的方法就会超时,所以我们就引入了数位DP的思想去解决。 在网上给的数位DP的模板中,有两种解题思想。一种是基于DFS,自上而下,记忆化搜索解决这个问题,另一种就是基于动态规划,自下而上去解决这个问题。 下面我们讲解的基于DFS,通原创 2017-03-01 12:26:34 · 327 阅读 · 0 评论