摘要: #includeusingnamespacestd;voidarray2(floatarr[][4],intn){floatmax,min,sum;inti,j;for(i=0;iarr[i][j])min=arr[i][j];}cout<<max<<"";cout<<min<<"";cout<<sum<<"";cout<<sum/4<<endl;}} 阅读全文
posted @ 2014-04-22 00:05 _一千零一夜 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 一旦wrong anwser可以从以下几个方面考虑1 算法是否正确2 特例有没有3 题意有没有理解#include#includeusing namespace std;struct Node{ short int dest; Node *next;};struct Graph{ Node *next;}ga[20001],gt[20001];int n,m;short int path[20001];char in[20001];char out[20001];char vis[20001];short int part[20001];//char map[20001][20001];voi 阅读全文
posted @ 2014-04-19 20:30 _一千零一夜 阅读(188) 评论(0) 推荐(0) 编辑
摘要: #includeusing namespace std;struct G{ int dest; G *next;};int n,m;G *ga[20001];G *gt[20001];G *g[20001];int path[20001];int in[20001];int out[20001];int vis[20010];int part[20001];char map[20001][20001];void addedge(G *g[],int i,int j){ G *l=new G; l->dest=j; l->next=g[i]; g[i]=l;}void dfsa(in 阅读全文
posted @ 2014-04-18 19:55 _一千零一夜 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 强连通分量 基础题 比较简单 第一次使用链式结构 纪念一下#includeusing namespace std;struct G{ int dest; G *next;};int n,m;G *ga[10001];G *gt[10001];int path[10001];int vis[10001];void addedge(G *g[],int i,int j){ G *l=new G; l->dest=j; l->next=g[i];//注意g初始化为0 g[i]=l;}void dfsa(int u){ G *l=ga[u]; if(!vis[u]) { vis[u]=1; 阅读全文
posted @ 2014-04-18 18:58 _一千零一夜 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 知其然 不知其所以然 哦哦DAG的最小路径覆盖和二分图的最大匹配 DAG图的最小路径覆盖数=节点数(n)- 最大匹配数(m)注意重新构图有原理一次通过#include#includeusing namespace std;int map[122][122];int fa[122];int v[122];int n;int dfs(int u){ for(int i=1;i<=n;i++) { if(map[u][i]&&!v[i]) { v[i]=1; if(!fa[i]||dfs(fa[i])) { fa[i]=u; return 1; } } } retu... 阅读全文
posted @ 2014-04-17 18:51 _一千零一夜 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 转自http://www.cnblogs.com/jackiesteed/articles/2043934.htmlDAG的最小路径覆盖和二分图的最大匹配DAG的最小路径覆盖是指找最小数目的互相不相交的有向路径,满足DAG的所有顶点都被覆盖.首先给出公式:DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中的最大匹配数.那么对应一个DAG,如何构造相应的二分图?对于DAG中的一个顶点p,二分图中有两个顶点p和p',对应DAG中的一条有向边p->q,二分图中有p-q'的一条无向边.二分图中p属于S集合,p'属于T集合.下面我们来解释上面公式为什么成立,思路参考b 阅读全文
posted @ 2014-04-17 18:33 _一千零一夜 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 最小点集覆盖==最大匹配 证明转自http://blog.csdn.net/chinachenyadong/article/details/8645145分类: Algorithm 2013-03-07 09:50 74人阅读 评论(0)收藏 举报摘自http://www.cnblogs.com/rainydays/archive/2011/03/03/1969543.html首先,最小点集覆盖一定>=最大匹配,因为假设最大匹配为n,那么我们就得到了n条互不相邻的边,光覆盖这些边就要用到n个点。现在我们来思考为什么最小点击覆盖一定<=最大匹配。任何一种n个点的最小点击覆盖,一定可以 阅读全文
posted @ 2014-04-15 18:36 _一千零一夜 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 无语了 同一种电话号码竟然能出现两次并且不算同一个#include#include#includeusing namespace std;char a[1111][11111];int main(){ char s[11111]; int n,i,f,j; while(cin>>n&&n) { f=0; for(i=0;i>a[i]; for(i=0;i<n;i++) { int l=strlen(a[i]); for(j=0;j<n;j++) { int l1=strlen(a[j]); if(i==j||l1<l) continue; s 阅读全文
posted @ 2014-04-13 16:14 _一千零一夜 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 用的时候太不细心关注细节问题了#include#include#includeusing namespace std;int map[333][333];int v[333];#define INF 999999999int min(int a,int b){ if(aw) map[x][y]=w; } printf("Case %d:\n",cas); while(q--) { scanf("%d",&w); if(w==1) //一开始全没解放 直接输出 { scanf("%d%d",&x,&y); if( 阅读全文
posted @ 2014-04-13 15:50 _一千零一夜 阅读(116) 评论(0) 推荐(0) 编辑
摘要: #include#includeusing namespace std;int sum;struct LNode{ char data; struct LNode * next;};void f1(LNode *&L){ LNode *s,*r; int n; L=(LNode *)malloc(sizeof(LNode)); cout>n; r=L; for(int i=0;i>s->data; sum++; r->next=s; r=s; } r->next=NULL;}void f2(LNode *&L){ LNode *r=L,*s; wh 阅读全文
posted @ 2014-04-02 12:26 _一千零一夜 阅读(152) 评论(0) 推荐(0) 编辑