- 博客(23)
- 资源 (9)
- 收藏
- 关注
原创 poj3020 匈牙利算法+公式:二分无向图的最小路径覆盖 = 顶点数 - 最大二分匹配数 / 2
这道题想了很久,预先知道是匈牙利算法,但是呢,实在没法和二分图联系起来,尤其是怎么想最大点集覆盖和最大匹配都不行。磨蹭两个小时,跑去看答案,小优的答案很详细,大家自己看吧:http://blog.csdn.net/lyy289065406/article/details/6647040基本的思想是:无向二分图的最小路径覆盖 = 顶点数 – 最大二分匹配数/2构造一个无向二分图,
2014-12-27 17:14:13 990
原创 poj3041 最小点覆盖==二分图最大匹配 匈牙利算法求解最大匹配问题(运用DFS)
//poj3041 二分图 可以做一款手势消灭星星的小游戏//第一次见到二分图的匈牙利算法,需要好好学习一下,否则就只会复杂度为边数的指数级的方法,还WA。。。//最小点覆盖:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖图的所有的边。//最小点覆盖数 = 最大匹配数//用增广路求最大匹配的方法----匈牙利算法//若P是图G中一条连通两个未匹
2014-12-13 19:10:26 864
原创 poj1094 拓扑排序,栈+入度,方法很难想到,
//poj1094 拓扑排序 栈+入度//若A比B,C,D小,A的度就是3.只要通过不断缩小B/C/D的度,然后减小A的度,当A的度是0的时候,就可以存进栈里面了//题解的强大之处在于灵活利用了入度这个概念,存在解的时候,必须满足只有一个单源点,沿着解这条路走,必然是单源点后面跟着入度为1的点,//然后删除单源点,更新入度,重复,又是仅有一个单源点,且后面跟着入度为1的点。最后仅剩一个单源点
2014-12-10 15:16:46 1442 1
原创 poj1004 水题一道
//poj1004 千年大水题#include #include using namespace std;int main(){ double a; double b = 0; for (int i = 0; i < 12; i++) { cin >> a; b += a; } b /= 12.0; cout <<fixed << setprecision(2) <
2014-12-10 14:56:25 726
原创 poj1094贴一份TLE的代码,以后有可能再优化。
//poj1094 写了两个DFS,TLE 话说我输入一次它就来两个DFS,能不TLE吗?//我看Discuss有测试数据,跑了一下,真的很慢,脑残的孩子果然只有慢慢学。//贴一份TLE的代码,备份一下,说不定哪天我可以继续优化,然后AC。#include #include #include using namespace std;int top = 0;bool isSourc
2014-12-10 13:06:17 614
原创 poj3026 这道题要注意输入w, h之后的空格 BFS+prime
其实做完这道题整个人都不好了,感觉自己的BFS写得还好,应该不会错。结果WA了2次,看Disscus发现可能数组要开大点,结果还是WA。然后看小优的博客,发现她也说道空格的事情,我的VS2013支持gets_s(),所以就把getchar()改成gets_s(temp),于是AC乎。//poj3026 分小组搜索外星人,在起点或者搜到一个外星人就可以发生分组//其实还是一个MST问题 只
2014-12-07 21:20:20 827
转载 prime算法
prime算法的基本思想1.清空生成树,任取一个顶点加入生成树2.在那些一个端点在生成树里,另一个端点不在生成树里的边中,选取一条权最小的边,将它和另一个端点加进生成树3.重复步骤2,直到所有的顶点都进入了生成树为止,此时的生成树就是最小生成树kruskal算法:构造一个只含n个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树的根节点,则它是一个含有n棵树的森林 。
2014-12-06 17:32:04 1152
原创 poj1258 prime算法+距离表 还是47MS,搞不懂,过了就好。
//poj1258 prime算法+距离表 #include #include #define inf 100005using namespace std;int dist[105];int mark[105];int weight[105][105];int sum;int prime(int n){ dist[0] = 0; mark[0] = true; for(
2014-12-06 16:49:22 569
原创 poj1258 kruskal算法+并查集 只要47MS我也是醉了
//poj1258 kruskal算法+并查集 为什么只要47MS? #include #include #define inf 100005using namespace std;int max1;int father[105];int rank[105];struct edge{ int st; int ed; int w;}e[10005];int top = 0
2014-12-06 16:41:13 628
原创 poj2485 Kruskal算法+并查集 922MS险过
//poj 2485 kruskal算法+并查集 TLE 922MS擦线(1000MS)过 #include #include #define inf 65537using namespace std;int max1;int father[501];int rank[501];struct edge{ int st; int ed; int w;}e[125255];i
2014-12-06 16:22:51 560
原创 poj2485 prime算法+距离表
//poj 2485 还是先用prime,写起来比较快 #include #include #define inf 65537using namespace std;int weight[501][501];int dist[501];bool mark[501];int max1;int prime(int n){ dist[0] = 0; mark[0] = true;
2014-12-06 16:01:42 582
原创 poj1251 Kruskal算法+并查集
//poj1251 用Kruskal算法来做 顺带学习并查集 makeset union find #include #include #define inf 101using namespace std;int father[28];int rank[28];int sum;struct edge{ int st; int ed; int w;}e[400];int
2014-12-06 15:29:50 656
原创 poj1251 prime算法 + 距离表
//poj1251 先用prime做 后面还要用Kruskal算法来做 #include #define inf 101using namespace std;int vertex[28];int weight[28][28];int dist[28];bool mark[28];int sum;int prime(int n){ dist[0] = 0; mark[0]
2014-12-06 14:56:36 657
原创 poj1789 prime算法+距离表
//poj1789 抄别人kruskal代码始终让我不爽,决定至少用prime过这道题。 //开一个距离表维护所有未加入党组织的点到党组织的距离。//每次吸纳最短成员,更新这个距离表 //没有使用优先队列,下次再发一篇博客,还是写这道题 //原来时间限制是2000MS,这题目现在是1344MS过 #include #include #include #incl
2014-12-06 14:07:21 696
转载 poj1789 Kruskal算法,TLE7次,无奈之下复制代码。参考之后还是TLE,不相信,贴了提交,竟然750MS过
#include #include #include #include using namespace std;#define MAX 2005char str[MAX][8];int n,father[MAX],rank[MAX],k;//k为边数struct node{ int st; int en; int we;}edge[MAX*
2014-12-05 21:49:47 1104 1
原创 最短路算法总结
最近做POJ图论关于最短路径方面的题目,感觉需要总结一下:参考链接:最短路算法(1)松弛的意思就是用可以替代的更优的路径得到的值去更新原来的值。比如:AB + BC 牢记并灵活使用这个所谓的三角形不等式,是解题的关键。(2)最短路径的估计值就是对dist[][](多源最短)和dist[](单源最短)的初始化。根据题目的不同初始化不同,一般的最短路的初始化(有各种变形的不在
2014-12-05 16:36:08 1509
原创 poj2240 变形floyd算法
//poj2240 还是汇率不同进行套现的问题。Bellman_ford算法//多次松弛,变形floyd算法。如果 AB + BC > AC 则 AC = AB + BC //意思是:如果存在某些路径比从A直接转换到C,可以获得更多C的钱,那么就松弛AC这条路径。(A==C时就意味着可以挣钱) //WA了四次,都怪打前面代码(getIndex)时候有点犯晕。。。本来可以一次过的。。所以打代
2014-12-05 15:10:30 912
原创 poj1125 Floyd算法
//poj1125 传播图 怎样传播才能最快让所有人都获知消息 //floyd算法 如果AB + BC < AC, AC = AB + BC 一次ac,我突然感觉自己好厉害#include #include #include #include using namespace std;int inf = 100000;int t[105][105]; int max1[105];
2014-12-03 21:45:51 629
原创 poj2253 变形Floyd
//poj2253 求青蛙最小的一跳的距离。同时又可以到达目的地。//构造一个全部点的距离相邻矩阵 //然后使用变形的Dijkstra 如果存在 AB < AC BC < AC, 则AC == max(AB, BC) //前两次TLE...MD 后面发现原来是多加了一层松弛,去掉,然后对换遍历的顺序就可以了。 #include #include #include #include
2014-12-03 20:07:47 813
原创 poj1062
//poj1062 DP解法 三维DP,不用dij,不到30行代码,吓死我了 //d[i][j][k]代表得到第I个物品的最小花费 等级范围限制在j和k之间。j和k的范围随着交易变小 //j是最低范围,k是最大范围(没有考虑m的情况下)代表旅行家交易过的最低等级和最高等级。 //第一个点单枪匹马,通过递归不停更新自己的最小值。 //这份代码最为厉害,其他的代码,比如小优的代码,我看了一下,
2014-12-03 17:12:43 651
原创 机器学习实战之决策树(2)---选择最好的特征来划分数据集
from math import log#计算给定数据集的香农熵def calcShannonEnt(dataSet): numEntries = len(dataSet) labelCounts = {} for featVec in dataSet: currentLabel = featVec[-1] #为所有的可能分类创建字典
2014-12-02 14:41:34 3231 1
原创 机器学习实战之决策树(1)---ID3算法与信息熵,基尼不纯度
关于ID3算法百度文库有一篇十分详细的文章,介绍看一个例子,给出了具体的计算过程。文章链接:http://wenku.baidu.com/view/7933c2f6f61fb7360b4c65fd.html这是最后的决策树的形状,来源是百度文库。另有一篇CSDN博客介绍ID3算法:http://blog.csdn.net/zhaoyl03/article/details/86656
2014-12-02 11:26:28 4451 1
原创 机器学习实战之k-近邻算法(7)---算法总结
kNN算法总结kNN算法是分类算法里面最简单的。也很有效。但是它的缺点过于明显,以至于大家都不会用。就是时间和空间复杂度都太大了。kNN算法必须保存所有的数据集,如果数据很大,空间占用十分大。对每个数据集的每个数据特征都需要计算距离值,这个在实际使用中将是致命的,十分耗时。鉴于此,它的算法一般仅仅适用于机器学习入门和开阔思维,实际中很少用。
2014-12-02 09:41:20 784
dbg安装包,可供QT使用
2014-03-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人