摘要:
题目链接: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 ... 阅读全文
摘要:
题目链接: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. 阅读全文
摘要:
题目链接: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 阅读全文