02 2017 档案

摘要:二分搜索法,是通过不断缩小解可能存在的范围,从而求得问题最优解的方法。 1.从有序数组中查找某个值 STL以lower_bound函数的形式实现了二分搜索。类似方法还有upper_bound 2.假定一个解并判断是否可行 注意输出答案的格式 3.最大化最小值 找到最大的d使得最近的两头牛的距离不小于 阅读全文
posted @ 2017-02-28 17:03 docyard 阅读(458) 评论(0) 推荐(0)
摘要:1.prim 假设有一颗只包含一个顶点v的树T。然后贪心地选取T和其他顶点之间相连的最小权值的边,并把它加到T中。不断进行这个操作,就可以得到最小生成树。 #include<iostream> using namespace std; #define INF 10000000 const int m 阅读全文
posted @ 2017-02-26 16:46 docyard 阅读(180) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/nowandforever/p/4515612.html 阅读全文
posted @ 2017-02-26 16:37 docyard 阅读(91) 评论(0) 推荐(0)
摘要: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 阅读全文
posted @ 2017-02-25 19:09 docyard 阅读(254) 评论(0) 推荐(0)
摘要: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 阅读全文
posted @ 2017-02-25 19:06 docyard 阅读(226) 评论(0) 推荐(0)
摘要:并查集是一种用来管理元素分组情况的数据结构。可以高效地进行如下操作。 1.查询元素a和元素b是否属于同一组 2.合并元素a和元素b所在的组 并查集也是使用树形结构实现的。 每个元素对应一个节点,每个组对应一棵树。在并查集中,哪个节点是哪个节点的父亲以及树的形状等信息无需多加关注,整体组成一个树形结构 阅读全文
posted @ 2017-02-24 16:37 docyard 阅读(202) 评论(0) 推荐(0)
摘要:二叉搜索树是能够高效地进行如下操作的数据结构 1.插入一个数值 2.查询是否包含某个数值 3.删除某个数值 所有的节点,都满足左子树上的所有节点都比自己的小,而右子树上的所有节点都比自己大这一条件 如果有n个元素,平均每次操作需要O(log n)的时间 实现: 1 #include<bits/std 阅读全文
posted @ 2017-02-23 19:33 docyard 阅读(174) 评论(0) 推荐(0)
摘要:能够完成下列操作的数据结构叫做优先队列 1.插入一个数值 2.取出最小的数值(获得数值并且删除) 能够使用二叉树高效地解决上述问题的,是一种叫做“堆”的数据结构。(二叉堆) “堆”最重要的性质就是儿子的值一定不小于父亲的值。除此之外,树的节点是按照从上到下,从左到右的顺序紧凑排列的。 向堆中插入数值 阅读全文
posted @ 2017-02-23 16:07 docyard 阅读(252) 评论(0) 推荐(0)
摘要:有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 阅读全文
posted @ 2017-02-22 18:53 docyard 阅读(201) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/viphong/article/details/48110525 阅读全文
posted @ 2017-02-22 18:19 docyard 阅读(334) 评论(0) 推荐(0)
摘要:有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 阅读全文
posted @ 2017-02-22 17:54 docyard 阅读(431) 评论(0) 推荐(0)
摘要:有n个重量和价值分别为wi,vi的物品。从这些物品中挑选总重量不超过W的物品,求所有挑选方案中价值总和的最大值。 限制条件1<=n<=100,1<=wi<=10000000,1<=vi<=100,1<=W<=1000000000 和最初的01背包相比,只是修改了限制条件的大小。此前的复杂度是O(nW 阅读全文
posted @ 2017-02-22 16:59 docyard 阅读(261) 评论(0) 推荐(0)
摘要:完全背包 有n种重量和价值分别为wi,vi的物品,从这些物品中挑选总重量不超过W的物品,求出挑选物品价值总和的最大值。在这里,每种物品可以挑选任意多件。 限制条件:1<=n<=100,1<=wi,vi<=100,1<=W<=10000。 分析一下:dp[i+1][j]代表从前i种物品中挑选总重量不超 阅读全文
posted @ 2017-02-22 16:20 docyard 阅读(193) 评论(0) 推荐(0)
摘要:搜索算法和动态规划是在多种策略中选取最优解,贪心算法是遵循某种规则,不断地选取当前最优策略。 一、硬币问题 有1元,5元,10元,50元,100元,500元的硬币各C1,C5,C10,C50,C100,C500枚。现在用这些硬币来支付A元,最少需要多少枚硬币。 策略是尽可能选取面额大的硬币 1 in 阅读全文
posted @ 2017-02-21 19:05 docyard 阅读(651) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-19 23:09 docyard 阅读(17) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-19 22:26 docyard 阅读(179) 评论(1) 推荐(0)
该文被密码保护。
posted @ 2017-02-19 18:44 docyard 阅读(12) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-19 18:27 docyard 阅读(58) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-19 17:45 docyard 阅读(27) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2017-02-19 17:02 docyard 阅读(26) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-19 15:13 docyard 阅读(19) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2017-02-19 13:23 docyard 阅读(51) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-19 00:04 docyard 阅读(28) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-17 18:27 docyard 阅读(47) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-17 18:11 docyard 阅读(43) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-17 17:51 docyard 阅读(26) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-17 17:24 docyard 阅读(105) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-02-09 12:26 docyard 阅读(57) 评论(0) 推荐(0)