- 博客(11)
- 资源 (2)
- 收藏
- 关注
原创 pku 2965
<br /> 这题有人说这题是基本的枚举算法。。可是当我做起来却觉得一点都不容易,可能是我太水了吧!!不过我完全是先按自己的思路去敲。我自己的思路是广搜一个个枚举。。把16坐标表示为0 .... 15,然后每次都改变比之前选的大的。例如之前选的2,下次就选择比2大的。。。思路有了。。敲了代码,但是如何找父亲节点又杯具了,如果用fa[][]来存前驱的话,后面的枚举会把fa[][]的前驱覆盖,这样没办法把它之前的父亲节点输出。。于是乎我想到了在结构体内加son[]数组表示之前状态访问的子孙。。于是乎问题就解
2010-12-23 22:10:00
411
转载 最大权闭合图
<br />http://apps.hi.baidu.com/share/detail/18295127//最大权闭合图转化为最小割的证明。
2010-12-09 23:06:00
287
原创 pku 2186
<br />//思路:强连通分支然后重新构图,然后再判断出度为0的强连通分支里面的元素,如果出度为0的强连通有多个,则一定没有解!!<br />#include <iostream> #include <string> #include <vector> #define maxn 10001 using namespace std; int n,m,vis[maxn],ord[maxn],cnt,degree[maxn],out[maxn],ans; vector<int>G[maxn]; v
2010-11-28 13:51:00
365
原创 pku 1523
#include #include #include #define maxn 1001 using namespace std; int dfn[maxn],low[maxn],vis[maxn],f[maxn],vis2[maxn]; int rootson,ord; vectorG[maxn]; int min(int a, int b) { return a>b?b:a; } void add(int a, int b) { vis2[a] = vis2[b]
2010-11-27 01:49:00
448
原创 hdu 1827
<br />//前面的拓扑算法加强连通是为这题做准备,强连通缩点,然后选择入度为0的点跟拓扑差不多,这题我思路有些地方是借鉴别人的,因为我不懂的如何重新建图,后来学习学习,决得好强大,继续努力<br />#include <iostream> #include <string> #include <vector> #define maxn 1001 #define inf 0x7fffffff using namespace std; int n,m,cnt,p[maxn],ord[ma
2010-11-23 22:24:00
542
原创 hdu 1285
<br />//拓扑排序算法,每次找入度为0的节点,保存然后删与之相关的邻边。算法的正确性的证明,百度上有。不过之前我用一次dfs加邻接矩阵写一个按结束时间进行线性排序。但不能过。。囧<br />#include <iostream> #include <string> #define maxn 501 using namespace std; int map[maxn][maxn]; int into[maxn],ans[maxn],n,m; void toposort() { int
2010-11-23 11:28:00
540
转载 关于缩点
<br />//本文转自:http://hi.baidu.com/novosbirsk/blog/item/48573e80b202a3d09123d909.html<br />以前做某些图论题,常听校队的师兄说要“缩点”。但是什么是缩点,缩的是什么点,说的人很清楚,听的人却一头雾水。经过一番努力,本人终于明白了什么是“缩点”,分享一下个人的见解,若有不正确万望指正。<br /><br />无向图的连通性<br /><br />先明白一些概念。<br />割点:若一个点删除后(也就是与之相连的边统统去掉),
2010-11-22 15:11:00
492
原创 hdu 1269
<br />hdu 1269强连同分量,赤裸裸的算法,我只用一种方法写,留着以后当模板。。具体算法是如何实现的?我就不讲了,直接百度或是看算法导论都有<br />#include <iostream> #include <string> #include <vector> using namespace std; int n,m,cnt,k; vector<int>G[10001]; vector<int>G1[10001]; int vis[10001],ord[10001]; void
2010-11-22 10:44:00
743
原创 hdu 2063
<br />//很裸的二分匹配,直接写就是了,不过我还是wa了5次,悲剧悲剧===#include <iostream> #include <string> using namespace std; int k,m,n,vis[501],match[501]; int map[501][501]; int dfs(int s) { int i,t; for(i = 1; i<=m; i++) if(map[s][i]&&!vis[i]) { vis[i]
2010-11-19 20:31:00
434
原创 pku 3522 Slim Span
<br />pku 3522 Slim Span//求最小生成数的边差最小<br />一开始不知道怎么下手,思路是想按权差排序,后来发现不对!!<br />后来晓得时限是5s,就知道是暴力了,于是乎暴力解题==<br />#include <iostream> #include <algorithm> #define inf 0x7fffffff using namespace std; struct node { int u,v; int w; }Q[5001]; int n,m,s
2010-11-17 23:03:00
388
原创 hdu 1029
<br />hdu 1029/*水题,数据比较大,我用快排傻逼都可以过,不知道数据有多水,个人觉得还是用map做比较正式一点,否则内存浪费严重。我看见其他人用一个数组vis[k]++,如果k很大的话,会爆掉的。。。估计是数据太水了*/ #include <iostream> #include <map> using namespace std; int main() { int n,d,ans; while(cin>>n) { map<int,int
2010-11-11 16:25:00
478
动态规划经典题目.........................
2010-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅