2011年10月8日
摘要: 第七章 委托和事件回调(callback)函数是windows编程的一个重要部分。回调函数实际上是方法调用的指针,也称为函数指针,是一个非常强大的编程特性。.NET以委托的形式实现了函数指针的概念。但特殊在于,与c函数指针不同,.NET委托是类型安全的。7.1 委托委托是一种特殊的对象类型,其特殊之处在于:我们以前定义的所有对象都包含数据,而委托包含的是只是方法的地址。7.1.1 在csharp中声明委托使用委托,需两个步骤:1.定义delegate void IntMethodInvoker(int x);理解委托的一个要点是它们的类型安全性非常高。在定义委托时,必须给出它所代表的方法签名和 阅读全文
posted @ 2011-10-08 19:17 不是我干的 阅读(619) 评论(0) 推荐(0)
  2011年9月30日
摘要: 表示被这道题整得辛苦。刚开始是P=40005写成了P=4005。wa了无数次之后才发现是这个问题。然后是tle。因为刚开始因为最大流做题惯性有邻接表来存储。一直tle好久。然后再恍然大悟要用邻接矩阵。思路其实挺简单:有典型套路可做。这题很明显就是要“最短路”,但是这里的最短路是最长的权值最短,不是精确意义上的最短路。然后再有一个约束就是要求出好几条不重叠的“最短路”,不重叠!套路是用二分+最大流来做,将边得权值都设为1。如果重边则1+1=2,再重则3。挺典型的。#include<iostream> #include<algorithm> #define MIN(a,b) 阅读全文
posted @ 2011-09-30 23:42 不是我干的 阅读(376) 评论(0) 推荐(0)
摘要: 题意很显然,但是要注意product是有乘积的意思,即这次比较特殊的是不是求权值和最小,而是权值积最小。思路:1.权值积最小记得要用对数来处理。2.熟悉二分图最大匹配的就可以看出其实这题是个二分图最小权值点覆盖。二分图的X是行,Y是列,如果有伞兵(i,j)即有响应的x集合的点到y集合的点的边。幸运的是,这些边没有权值,(即在下面构造的在流网络中权值为inf)。但不能因此直接用最大匹配算法。因为每个点有权值。3.所以这里要用到最大流最小割的原理,设定源点和汇点。源点连接X集合的每个点的边的权值为X集合每个点的权值,同理汇点连接Y集合。这样就转化为一个典型的流网络。下面是代码,但是一直wa,可能是 阅读全文
posted @ 2011-09-30 13:35 不是我干的 阅读(222) 评论(0) 推荐(0)
  2011年9月29日
摘要: 我觉得算是比较简单的最大流了吧。主要是要理解清楚题意。题意:一个有向图,源点汇点已经确定,有向边已经知道,要求出增加某单条边得权值可以使最大流增加的单条边的个数。思路:其实使最大流增加这个条件就相当于寻找增广路径。先一边最大流处理过去。然后枚举每条饱和的单向边(此时权值为0),使其权值+1,如果bfs()返回true,即找得到增广路径。即这条边满足题意,即ans++。这样既可。#include<iostream> using namespace std; const int N=505,M=5005; const int inf=1<<29; int n,m; stru 阅读全文
posted @ 2011-09-29 20:54 不是我干的 阅读(356) 评论(0) 推荐(0)
  2011年9月28日
摘要: //floyd+二分答案+最大流判断 //但是一直wa,改天再详细查查原因。 //后来查出来是构图原因,修改的地方已经在注释中。 //现在AC了。 //我觉得代码写得还算容易看懂吧。 #include<iostream> using namespace std; #define MIN(a,b) (a<b?a:b) const int N=205; int n,m; int cow[N],shelt[N]; long long mat[N][N]; const int inf=1<<29; const long long INF=1ll<<59; st 阅读全文
posted @ 2011-09-28 23:11 不是我干的 阅读(571) 评论(0) 推荐(0)
  2011年9月26日
摘要: poj3228 Gold Transportation思路是并查集。并查集是在学习最小生成树kruskal算法的时候学习的。印象比较深。kruskal是从边的角度进行的得一种贪心算法。现在这道题其实很类似最小生成树kruskal算法,但是并它要简单得多。因为我们只需要满足最大值最小。而不需要满足总体最小。具体为:将1~n个town抽象为单个节点。然后对m条边进行从小到大排序。然后从小到大读取每条边的两个节点,并查集处理之。直到所有gold可以被运输完。一次AC。Source Code Problem: 3228 User: 64162451 Memory: 380K Time: 16M... 阅读全文
posted @ 2011-09-26 23:04 不是我干的 阅读(163) 评论(0) 推荐(0)
摘要: 但是不幸的是,一直超时。查不出来是不是我哪写错了。还是难道非得sap?#include<iostream> using namespace std; #define MIN(a,b) (a<b?a:b) #define MAX(a,b) (a>b?a:b) const int N=1005; const int B=25; int n,b; const int inf=99999999; struct Edge { int v,next,w,re; }edge[N*B*2+N*2+4]; int edgehead[N+B]; int k=1; int mat[N][B] 阅读全文
posted @ 2011-09-26 18:04 不是我干的 阅读(192) 评论(0) 推荐(0)
  2011年9月25日
摘要: 因为小学期的任务隔了不少时间没碰算法了。晚上很想a道网络流的题目,纠结了好久,实在不行。实在郁闷。无奈。搜了个大水题来做。这题实在水,能看得懂题意的都能做了吧。#include<iostream> using namespace std; const int N=55; int n,m; int Hash[101]; int main() { freopen("C:\\Users\\wuyanyisb\\Desktop\\1.txt","r",stdin); while(scanf("%d%d",&n,&m 阅读全文
posted @ 2011-09-25 22:34 不是我干的 阅读(212) 评论(0) 推荐(0)
摘要: 网络流sap算法模板及分析 zz http://www.cnblogs.com/littlex/archive/2011/08/13/2137568.html typedef struct node{ int v, w; struct node *nxt, *op; }NODE; NODE edg[MM]; // 保存所有的边 NODE *link[NN]; // 记录节点所在链表的首节点 int h[NN]; // 距离标号,记录每个点到汇点的距离,这里的距离指的是层数 int num[NN]; // gap优化,标号为i的顶点个数 int M... 阅读全文
posted @ 2011-09-25 20:17 不是我干的 阅读(203) 评论(0) 推荐(0)
  2011年9月19日
摘要: 刚接触spfa算法。我的理解是spfa算法实质是bellman算法的改进版,可以处理负值,这是和dij的本质区别,也是这里不能用dij的原因。spfa算法的队列的大小一定要注意!开小了悲情无限。而最大流最小费用的思路说简单了就是最大流的实现时,以前没有最小费用这个约束的时候,我们很随意的可以直接用bfs来搜索增广路径来解最大流。但此时有最小费用这个约束。我们用最短路来搜索增广路径。这样来求得的最大流则满足题意。#include<iostream>using namespace std;int n,m,k;const int inf=9999999;const int N=111;i 阅读全文
posted @ 2011-09-19 22:40 不是我干的 阅读(224) 评论(0) 推荐(0)