2013年2月20日

unique和unique_copy函数的应用

摘要: 刚开始接触几何,研究题目的时候发现了C++中的unique函数。参考(http://blog.sina.com.cn/s/blog_6d79d83a0100wh8u.html)1、unique函数的功能是:去除相邻的重复元素(只保留一个)。[函数参数:unique(first,last,compare);first为容器的首迭代器,last为容器的末迭代器,compare为比较函数(可略写)]注意:unique函数也并非是真正的删除了元素,一般要与erase成员函数 或 resize成员函数互相配合使用。看一个例题:给你一个字符串,删除字符串中相邻的重复元素,并打印字符串。#include & 阅读全文

posted @ 2013-02-20 13:54 Lavare 阅读(2189) 评论(0) 推荐(0)

2013年2月18日

动态规划

摘要: 1、经典问题:(数塔)自顶向下分析,自底向上计算poj3176Cow BowlingView Code #include <iostream>#include <cmath>using namespace std;int a[355][355], dp[355][355];int n;int main(){ while(cin >> n) { for(int i = 1; i <= n; i++) { for(int j = 1; j <= i; j++) { cin >> a[i][j]; } ... 阅读全文

posted @ 2013-02-18 19:56 Lavare 阅读(219) 评论(0) 推荐(0)

2013年2月7日

二分图

摘要: 这上面分析得挺好的http://blog.sina.com.cn/s/blog_89a06c7d0100trcg.html1、二分图:如果一个图的顶点可分为两个集合X和Y,图的所有边一定是有一个顶点属于集合X,另一个顶点属于集合Y,则称改图为二分图。2、在二分图的应用中,最常见的就是最大匹配的问题,很多其他问题都可以通过转化为匹配问题来解决。3、二分图的最大匹配(匈牙利算法):http://blog.csdn.net/lishuhuakai/article/details/81238784、二分图的最小顶点覆盖:在二分图中求最少的点,让每条边都至少和其中的一个点关联。 注意:二分图的最小顶点. 阅读全文

posted @ 2013-02-07 19:11 Lavare 阅读(198) 评论(0) 推荐(0)

拓扑排序

摘要: 其实自己对于拓扑排序的理解不深,前几天恰好碰到这题,一开始不知如何下手,后来搜了一下网上的解题报告才知道是拓扑的题,所以想记录一下以便以后翻阅。当然我写博客的主要目的就为了记录下自己学习的点滴。poj1094sorting it outView Code #include <iostream>#include <cstdio>#include <cstring>#include <string>#include <queue>#include <cmath>#include <vector>using name 阅读全文

posted @ 2013-02-07 18:38 Lavare 阅读(158) 评论(0) 推荐(0)

2013年2月5日

最短路

摘要: 最短路:寻找图中2点之间的最短路径,常用的算法有floyd算法,dijkstra,spfa1、floyd算法是最简单的最短路径算法,可以计算图中任意两点间的最短路径 folyd算法的时间复杂度是O(N3),如果是一个没有边权的图,把相连的两点 间的距离设为dist[i][j] = 1,不相连的两点设为无穷大,用 floyd算法可以判断i,j两点是否有路径相连。View Code View Code void floyd(){ for(int k = 0; k < n; k ++){ //作为循环中间点的k必须放在最外一层循环 for(int i = 0; i < n; i... 阅读全文

posted @ 2013-02-05 17:17 Lavare 阅读(190) 评论(0) 推荐(0)

次小生成树

摘要: 次小生成树:通过交换一条最小生成树上的边求解次小生成树可通过Kruskal算法和prime算法延伸得到:1、Kruskal 算法求得的过程就是多次求最小生成树。我们第一次求最小生成树的时候把边的序号都记下来,然后以后多次求最小生成树的时候,每次都不用第一次求得的最小生成树的边。比如说,第一次求最小生成树用到了边1 6 7,则我们再次求3次最小生成树,第一次不用边1,第二次不用边6,第三次不用边7,若中间有哪一次和第一次的和相等,则说明不唯一,否则,唯一。(ps:自己还没有用Kruskal算法写过,下次有机会补上)2、用prime算法求最小生成树的过程是先求一遍最小生成树,在求得过程中我们设置一 阅读全文

posted @ 2013-02-05 16:31 Lavare 阅读(190) 评论(0) 推荐(0)

2013年2月4日

最小树形图

摘要: 其实好几天前就开始看最小树形图了,不过每次看心情都很浮躁,根本看不进去,今天做了几道模板题,算是对此有些了解了吧~趁着知识还热着,快快记下来!!呵呵最小树形图其实就是有向图的最小生成树,树形图是一棵有向树,它的根可以到达其他图的其他每个节点。最小树形图是一个图的所有树形图中边权值最小的。求解最小生成树的步骤如下:1、对除了根节点外的每个节点i,求出权值最小的入边。2、如果这些入边不构成环,那么入边的集合E即为所求。否则将有向环缩成一个点。注意:对于无根的情况->虚拟一个超级根节点,向每个节点拉出一条边,权值应大于所有权值和其实一开始真的很难理解,不知如何下手,找了很多资料,最后看到那张图 阅读全文

posted @ 2013-02-04 21:53 Lavare 阅读(281) 评论(0) 推荐(0)

最小生成树

摘要: 发现图论真的是很难的一块知识,遂决定从最小生成树开始,一点点积累,养成自己思考些代码的好习惯~下面介绍实现最小生成树的2种基本算法:Kruskal算法和prime算法附上模板(ps:参考了小明哥的模板):1、Kruskal O(Elg(E))#define type doublestruct Road { int u, v; type len;}road[MAXE];int n, cc;int tree[MAXN];bool cmp(Road a, Road b) { return a.len < b.len;}int find(int x) { if(tree[x] ... 阅读全文

posted @ 2013-02-04 14:49 Lavare 阅读(171) 评论(0) 推荐(0)

导航