随笔分类 - 杂算法
摘要:二分距离,求最大团,看是否>=KView Code #include<iostream>#include<algorithm>#include<string>#include<math.h>using namespace std;const int N = 50+10;int dis[N][N],dd[N*N];int dp[N];bool inset[N],g[N][N];int n,best,ord[N],deg[N];bool found;inline void Memcpy(bool *d,bool *s){ for(int i=0
阅读全文
摘要:关于稳定婚配,下面的博客写得很错,思路很好理解http://www.cppblog.com/goal00001111/archive/2010/04/14/112525.html模板View Code #include <iostream>using namespace std;const int MAX = 4;int main(){ int libMan[MAX][MAX] = {{2, 1, 3, 0}, {0, 2, 3, 1}, {2, 3, 1, 0}, {1, 3, 2, 0}}; //存储男士所喜欢的女士序号的排列表 int libLady[MAX][MAX+1]
阅读全文
摘要:hdu1530 Maximum Clique题意:给定一个无向图,求最大团数分析:求最大团,也就是求一个最大的完全子图,只能靠搜索了,用一个dp数组剪枝搜索思路倒是很清晰一般思路:枚举每一个点,假设选择了这个点,那么最大团组成的集合就可能是由与这个点关联的点的集合组成,接下来就是深搜选择这个集合里面的点的过程了。剪枝:1)重新排列了访问的顺序,按度数大的先访问2)用一个dp[]数组,dp[i]表示i到n-1范围内的点组成的最大团数,那么dp[i-1] 的最大可能值就是 dp[i]+1了,这个可以在搜索过程用来剪枝悲剧,怎么改都是1000+msView Code #include<iost
阅读全文