摘要: 有两个资源供应,而需求只有一个,把需求拆点,限制容量,放中间,其中一个点跟资源1相连,另外一个点与资源2相连,跑最大流。 1 #include 2 #include 3 #include 4 #include 5 #define INF 1<<30 6 #define maxn 10100 7 #define maxm 1000000 8 using namespace std; 9 10 int v[maxm],next[maxm],w[maxm];11 int first[maxn],d[maxn],work[maxn],q[maxn];12 int e,S,T;13 14 v 阅读全文
posted @ 2013-10-26 19:22 浙西贫农 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 题意:老师要把N颗糖分给M个小盆友,M*N的矩阵中的元素(i,j)表示第i个小孩对第j颗糖的喜好,1表示喜欢,0表示不喜欢。如果一个小朋友得到了一颗糖,并且这颗糖是自己喜欢的糖,他会得到K个glad值,否则,只能得到1的glad值。现在告诉你每个小朋友i的glad值要达到B[i]才会开心,问是否存在一种分配方案使得所有的小朋友都能够开心。(1sum(B[i])是不是成立,如果成立就可以给出一个分配方案。maxflow流的意义是所有孩子被分到喜欢的糖的前提下的最大的glad值之和-这些孩子喜欢的糖的数目,那么再加上所有糖的数目n就是能够总体能够达到最大glad值了。这里,glad值的范围变成了[ 阅读全文
posted @ 2013-10-26 18:27 浙西贫农 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题意:水面上有很多的圆形区域,他们要么存在相交的区域,要么不存在相交的区域,不会存在相切的情况。每个区域都有颜色,并且告诉你每个区域颜色的频率。现在要求你从唯一的一个红色区域(频率最小)走到紫色区域(频率最大)并从紫色区域返回红色区域。并且必须遵循以下三个规则:(1)从红色走到紫色的时候,必须从频率小的区域走向频率大的区域。(2)从紫色走到红色的时候,必须从频率大的区域走向频率小的区域。(3)除了初始的红色区域,你每离开一个区域的时候,那个区域都会消失。问你是否存在一个合法的方式。这里最关键的问题是要形成回路。首先,如果红色区域跟紫色区域直接相交,那就直接可以判为存在合法方案了。如果不想交,首 阅读全文
posted @ 2013-10-26 12:20 浙西贫农 阅读(553) 评论(0) 推荐(0) 编辑