摘要: 题意:有F快草地,每块草地上有若干奶牛也有避雨点,每个避雨点只能够容纳一定量的奶牛。草地之间有边。现在问所有牛全部到达避雨点的时间是多少?解法:这题和POJ-2112非常相似,做法也差不多,folyd处理之后二分枚举答案。该题的构图稍微难一点,需要考虑到一个流量的控制问题,即当某一点多余的流量流出去后必须在下一个点停止住。自己是把一个点拆成了3个点进行控制,后面学习了别人拆成两个点也能完成。代码如下:#include <cstdlib>#include <cstdio>#include <cstring>#include <iostream>#i 阅读全文
posted @ 2013-04-30 23:31 沐阳 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一些散列的源点会汇点,求解网络流。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int INF = 0x3fffffff;const int SS = 105, TT = 106;int n, np, nc, m;struct Edge { int v, c, next; };Edge e[100000];int idx, he 阅读全文
posted @ 2013-04-30 20:32 沐阳 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 题意:有C头奶牛,K个挤奶站,每个挤奶器最多服务M头奶牛,奶牛和奶牛、奶牛和挤奶站、挤奶站和挤奶站之间都存在一定的距离。现在问满足所有的奶牛都能够被挤奶器服务到的情况下,行走距离的最远的奶牛的至少要走多远。解法:又是一个求最大中的最小问题,很容易想到用二分枚举来得出正确的答案。首先对整个图做一个floyd,求出两两之间的最短路,然后再枚举一个最大距离值进行构边,每次询问是否能够全部奶牛都能够被匹配到。注意:距离为0是当作INF处理,否则在floyd取min的时候要特判。代码如下:#include <cstdlib>#include <cstdio>#include &l 阅读全文
posted @ 2013-04-30 17:05 沐阳 阅读(869) 评论(0) 推荐(0) 编辑
摘要: 题意:很裸,M和N的顺序别搞错了。代码如下:#include <cstdlib>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int N, M;const int INF = 0x3f3f3f3f;struct Edge { int v, c, next; }e[500];int idx, head[205];int level[205];int front, tail, que[205];vo 阅读全文
posted @ 2013-04-30 14:56 沐阳 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题意:一个农夫要把养殖的猪卖出去,现有M个猪圈,农夫自己没有猪圈的钥匙。现有N个客户要来买猪,每个客户手中有Ai把钥匙,分别表示成猪圈的编号,并且每个客户需要买一定的猪。这些客户依次过来(编号从小到大),现在农夫可以选择如何将这些猪卖给每一个客户,只要头数不超过需求即可。农夫在处理好每一笔交易后能够将打开的猪圈门之内的猪任意分配。现在问农夫能够卖出最多的猪的数量。解法:通过这一题,发现构边的时候其实是有很多技巧的,这题如果把猪圈放到图中的话那么将成为一道不可做题。原因是时间复杂度和空间复杂度太高了。其实可以画出一个简图,然后再通过合并边和合并点来简化构图。由于农夫能够在打开猪圈后任意分配猪。因 阅读全文
posted @ 2013-04-30 14:40 沐阳 阅读(324) 评论(0) 推荐(0) 编辑