02 2017 档案
摘要:二分搜索法,是通过不断缩小解可能存在的范围,从而求得问题最优解的方法。 1.从有序数组中查找某个值 STL以lower_bound函数的形式实现了二分搜索。类似方法还有upper_bound 2.假定一个解并判断是否可行 注意输出答案的格式 3.最大化最小值 找到最大的d使得最近的两头牛的距离不小于
阅读全文
摘要:1.prim 假设有一颗只包含一个顶点v的树T。然后贪心地选取T和其他顶点之间相连的最小权值的边,并把它加到T中。不断进行这个操作,就可以得到最小生成树。 #include<iostream> using namespace std; #define INF 10000000 const int m
阅读全文
摘要:http://www.cnblogs.com/nowandforever/p/4515612.html
阅读全文
摘要:1 #include<iostream> 2 #include<queue> 3 #define INF 1000000 4 using namespace std; 5 typedef pair<int,int> P; //first是最短距离,second是顶点编号 6 struct edge
阅读全文
摘要:1.bellman-ford 1 #include<iostream> 2 #define INF 1000000 3 using namespace std; 4 struct edge 5 { 6 int from,to,cost; 7 edge(){} 8 edge(int ff,int tt
阅读全文
摘要:并查集是一种用来管理元素分组情况的数据结构。可以高效地进行如下操作。 1.查询元素a和元素b是否属于同一组 2.合并元素a和元素b所在的组 并查集也是使用树形结构实现的。 每个元素对应一个节点,每个组对应一棵树。在并查集中,哪个节点是哪个节点的父亲以及树的形状等信息无需多加关注,整体组成一个树形结构
阅读全文
摘要:二叉搜索树是能够高效地进行如下操作的数据结构 1.插入一个数值 2.查询是否包含某个数值 3.删除某个数值 所有的节点,都满足左子树上的所有节点都比自己的小,而右子树上的所有节点都比自己大这一条件 如果有n个元素,平均每次操作需要O(log n)的时间 实现: 1 #include<bits/std
阅读全文
摘要:能够完成下列操作的数据结构叫做优先队列 1.插入一个数值 2.取出最小的数值(获得数值并且删除) 能够使用二叉树高效地解决上述问题的,是一种叫做“堆”的数据结构。(二叉堆) “堆”最重要的性质就是儿子的值一定不小于父亲的值。除此之外,树的节点是按照从上到下,从左到右的顺序紧凑排列的。 向堆中插入数值
阅读全文
摘要:有n个无区别的物品,将它们划分成不超过m组,求出划分方法数模M的余数 1<=m<=n<=1000 2<=M<=10000 这样的划分称作n的m划分 dp[i][j]:j的i划分的总数 考虑n的m划分a1,a2...am 如果对于每个i都有ai>0,那么{ai-1}就对应了n-m的m划分。如果存在ai
阅读全文
摘要:http://blog.csdn.net/viphong/article/details/48110525
阅读全文
摘要:有n种不同大小的数字ai,每种各mi个。判断是否可以从这些数字之中选出若干使它们的和恰好为K。 限制条件 1<=n<=100,1<=ai,mi<=100000,1<=K<=100000. dp[i+1][j]:用前i种数字能否加和成K 为了前i种数字能加和成K,需要能用前i-1种数字加和成j,j-a
阅读全文
摘要:有n个重量和价值分别为wi,vi的物品。从这些物品中挑选总重量不超过W的物品,求所有挑选方案中价值总和的最大值。 限制条件1<=n<=100,1<=wi<=10000000,1<=vi<=100,1<=W<=1000000000 和最初的01背包相比,只是修改了限制条件的大小。此前的复杂度是O(nW
阅读全文
摘要:完全背包 有n种重量和价值分别为wi,vi的物品,从这些物品中挑选总重量不超过W的物品,求出挑选物品价值总和的最大值。在这里,每种物品可以挑选任意多件。 限制条件:1<=n<=100,1<=wi,vi<=100,1<=W<=10000。 分析一下:dp[i+1][j]代表从前i种物品中挑选总重量不超
阅读全文
摘要:搜索算法和动态规划是在多种策略中选取最优解,贪心算法是遵循某种规则,不断地选取当前最优策略。 一、硬币问题 有1元,5元,10元,50元,100元,500元的硬币各C1,C5,C10,C50,C100,C500枚。现在用这些硬币来支付A元,最少需要多少枚硬币。 策略是尽可能选取面额大的硬币 1 in
阅读全文

浙公网安备 33010602011771号