[POJ 3189]枚举、网络流判定

【题目大意】给定N只牛,B个牛棚,还有每只牛给这个牛棚的打分,并且每只牛棚只能装suffer[i]只牛,让你求一个最小的分数区间[A,B],使得每只牛都能放进牛棚。

【算法分析】枚举答案,然后枚举其实分数,然后用网络流判定就行了。

还有一种做法是根据单调性,用双指针维护,相当于维护一个队列。这样会快一点,但是我写了一次,莫名其妙的TLE和WA,于是只能用这种方法。

【其它】

6376444 edward2 3189 Accepted 1320K 188MS G++ 2456B

2010-01-27 11:05:43

还算比较快

【CODE】

#include

[POJ 2594]可以用重复点的最小路径覆盖

【题目大意】给定一个无环有向图,然后求可以用重复点的最小路径覆盖。

【算法分析】既然可以用重复的,那么就可以用floyed求传递闭包,然后重复的相当于走过那条路了。然后求最小路径覆盖即可。

【HINT】记得最后要n-ans

【CODE】

#include

[POJ 1904]强连通分量、二分图匹配、巧妙转化**

【题目大意】有N个女生,N个男生,给定一些边表示这两个人可以结婚。再给定一个初始匹配,表示这个男生和哪个女生结婚。初始匹配必定是合法的。然后让你求每个男生可以和哪几个女生结婚,使得所有人都能得到婚配。

【算法分析】如果男生A可以和女生B结婚,那么连边[A,B],如果初始匹配[A,B],那么连边[B,A],最后,如果在同一个强连通分量以内,则表示可以结婚。

其实就是二分图匹配中的寻找增广路的过程,可以自己体会。

【CODE】

#include

[POJ 3660] 传递闭包

【题目大意】给定N只牛和M场比赛结果,问有多少牛的排名结果可以确定。(假设每只牛都有一个不同的力量值,大得肯定打赢小的)

【算法分析】如果A赢了B,那么连边[A,B],然后传递闭包。最后,如果某只牛的出度+入度=n-1的话,它的排名就已经确定了。

【其它】1A。这可能是除了A+Bproblem以外最短的程序了。。。水过留痕

【CODE】

#include