摘要: 题目链接:http://poj.org/problem?id=2391思路:求最短时间,可以想到二分,然后判断可行性。首先在原图上求 floyd,得到每两个棚之间的最短距离。然后拆点:将每个棚拆为 i 和 i’(流进和流出),添边(i,i’,INF)。增加源点 s 和汇点 t,从 s 连边到 i,容量为该棚现在的猫的数量,i’连边到 t,容量为该棚的容量。若棚 i 和棚 j 之间的距离不大于 limit,则连边(i,j’,INF), (j,i’,INF)。求最大流,若从 s 发出的边均满流,则在 low 和 mid 中搜索;否则在 mid 和 high 中搜索。 1 #include 2 .. 阅读全文
posted @ 2013-08-23 21:47 ihge2k 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2135思路:把路长看作费用,然后如果u,v之间有边,就连u->v,v->u,边容量为1,表示每条边只能走一次,最后就是源点与1连边,容量为2,费用为0,n与汇点连边,容量为2,费用为0,表示增广2次。这样就转化为为最小费用最大流问题来求解了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define MAXN 1010 8 #define MAXM 88888 9 #define inf 1que... 阅读全文
posted @ 2013-08-23 19:19 ihge2k 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2125思路:将最小点权覆盖转化为最小割模型,于是拆点建图,将点i拆成i,i+n,其中vs与i相连,边容量为w[i]-,i+n与vt相连,边容量为w[i]+,如果i,j有边相连,则i与j+n连边inf.从而跑最大流求解。对于输出解决放案,我们可以在残余网络中进行dfs,从vs出发,对于那些in遍历到的点,说明之前有j->i的边(jj不是最小割中的边,i是最小割中的点,输出‘+’。copy一张图: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using ... 阅读全文
posted @ 2013-08-23 16:25 ihge2k 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4704思路:一道整数划分题目,不难推出公式:2^(n-1),根据费马小定理:(2,MOD)互质,则2^(p-1)%p=1,于是我们可以转化为:2^(n-1)%MOD=2^((n-1)%(MOD-1))%MOD,从而用快速幂求解。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define MOD 1000000007 7 8 char str[100100]; 9 long long Pow(long l. 阅读全文
posted @ 2013-08-23 11:05 ihge2k 阅读(590) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4705思路:反面考虑,用总的方案数减去A,B,C三点在同一路径上的方案数。于是我们可以确定中间点B,在当前以B为根求得的son中任选一个,在剩下的节点n-tmp-1(tmp为已经求得的B的儿子的个数)中任选一个,产生tmp*(n-tmp-1)中组合。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define MAXN 100100 7 #pragma comment(linker, "/STAC 阅读全文
posted @ 2013-08-23 10:15 ihge2k 阅读(723) 评论(0) 推荐(0) 编辑