上一页 1 ··· 3 4 5 6 7 8 9 下一页
  2011年8月28日
摘要: 思路很简单,显然是2分图最大匹配。其中需要floyd处理一下。构图很恶心。个人觉得这题出得不好。#include<iostream>#include<map>#include<string>using namespace std;int n,m,k;const int N=405;int a[N],b[N];bool mat[N][N];bool visit[N];int link[N];bool trans[N][N];char targ[N][30];map<string,int> mapa;bool dfs(int u){for(int i 阅读全文
posted @ 2011-08-28 02:02 不是我干的 阅读(226) 评论(0) 推荐(0)
  2011年8月27日
摘要: 基础题。注意点在于当模式等于0时的处理。#include<iostream>using namespace std;int n,m,k;const int N=105,M=1005;bool mat[N][N];bool visit[N];int link[N];bool dfs(int u){for(int i=0;i<m;i++)if(!visit[i]&&mat[u][i]){visit[i]=true;if(link[i]==-1||dfs(link[i])){link[i]=u;return true;}}return false;}int main 阅读全文
posted @ 2011-08-27 21:53 不是我干的 阅读(135) 评论(0) 推荐(0)
摘要: 最小点覆盖题目。注意:这里的每个节点可以让多个路径通过。故需要先用floyd处理一遍。#include<iostream>using namespace std;int n,m;const int N=505,M=5005;bool mat[N][N];bool visit[N];int link[N];//int edgehead[N];/*struct{int v;int next;}edge[M];*/void floyd(){for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if( 阅读全文
posted @ 2011-08-27 21:28 不是我干的 阅读(150) 评论(0) 推荐(0)
摘要: 刚开始写错:代码如下(应该有不少人犯和我一样的错误)#include<iostream>using namespace std;int n;const int N=505;bool mat[N][N];bool visit[N];int link[N];bool dfs(int u){for(int i=0;i<n;i++)if(!visit[i]&&mat[u][i]){visit[i]=true;if(link[i]==-1||dfs(link[i])){link[i]=u;return true;}}return false;}int main(){wh 阅读全文
posted @ 2011-08-27 19:57 不是我干的 阅读(158) 评论(0) 推荐(0)
摘要: 本质是最大团的问题。转化成补集的最大独立集的问题。这题的巧妙之处就在此。#include<iostream>using namespace std;const int N=205;int link[N];bool visit[N];bool match[N][N];int g,b,m;bool dfs(int u){for(int i=1;i<=b;i++)if(!visit[i]&&!match[u][i]){visit[i]=true;if(link[i]==-1||dfs(link[i])){link[i]=u;return true;}}return 阅读全文
posted @ 2011-08-27 00:02 不是我干的 阅读(113) 评论(0) 推荐(0)
  2011年8月26日
摘要: 主要难点是在最小路径覆盖,详细见本博客转载的 最小路径覆盖。不得不是说,这是一道很不错的题目。刚开始wa。是因为没理解清楚最小路径覆盖的二分图思想。构图的时候要注意,每个节点代表任务,而不是block。当这个任务i做完可以去做任务j。则match[i][j]=true.这个很关键。#include<iostream>using namespace std;int q,m;const int Q=22,M=202;int mat[Q][Q];struct{int p,t,d;}task[M];int link[M];bool visit[M];bool match[M][M];con 阅读全文
posted @ 2011-08-26 22:25 不是我干的 阅读(199) 评论(0) 推荐(0)
摘要: 还是二分图。个人觉得如果把二分图的匈牙利算法学会了。这些应用都是挺简单的。#include<stdio.h>#include<memory.h>#include<math.h>int n,m,s,v;const int N=105;int link[N];bool visit[N];struct{double x,y;}h[N],g[N];bool mat[N][N];bool dfs(int u){for(int i=1;i<=m;i++){if(!visit[i]&&mat[u][i]){visit[i]=true;if(link[ 阅读全文
posted @ 2011-08-26 15:02 不是我干的 阅读(159) 评论(0) 推荐(0)
摘要: 思路:先用floyd处理一次这个很容易想到。查了一下网上都是用旅行商问题。第一次做这种旅行商DP问题。下面是参考别人的代码。据说用传统枚举暴力也可以的。因为N=10;#include<stdio.h>int n;const int N=12;int dp[1<<11][N];int mat[N][N];int pre[N];const int inf=99999999;int min(int a,int b){if(a<b)return a;return b;}void floyd(){for(int k=0;k<=n;k++)for(int i=0;i&l 阅读全文
posted @ 2011-08-26 13:50 不是我干的 阅读(442) 评论(0) 推荐(0)
摘要: zz北邮人论坛发信人: wks (cloverprince), 信区: WWWTechnology标 题: 你怎么跟你奶奶说明什么是XML?发信站: 北邮人论坛 (Thu Aug 25 13:57:06 2011), 站内我觉得XML真的不难啊。不就这么一点点东西嘛,但是真难跟没接触过的人说明白。方案1:XML节点是如下定义的:1. 字符串是XML节点。2. 元素是XML节点。一个元素包含一个由字符组成的名称,若干个属性,和若干个子节点。每个属性是一对字符串,每个子节点都是XML节点。由以上两种XML节点有限组合起来,就得到了一篇XML文档。奶奶似乎想再听一遍。但是我说了好几遍,她也没有全部记 阅读全文
posted @ 2011-08-26 12:54 不是我干的 阅读(174) 评论(0) 推荐(0)
  2011年8月25日
摘要: #include<stdio.h>const int N=1005;int n,m;bool mat[N][N];int prec[N][N],succ[N][N];void floyd(){for(int k=1;k<=n;k++){for(int i=1;i<=prec[k][0];i++){int a=prec[k][i];for(int j=1;j<=succ[k][0];j++){int b=succ[k][j];if(!mat[a][b]){mat[a][b]=true;prec[b][++prec[b][0]]=a;succ[a][++succ[a] 阅读全文
posted @ 2011-08-25 22:28 不是我干的 阅读(253) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 9 下一页