上一页 1 ··· 96 97 98 99 100 101 102 103 104 ··· 121 下一页
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3987思路:我们知道最小割是不唯一的,这里要我们求割边最少的最小割,比较好做法有:第一种:建边的时候每条边权 w = w * (E + 1) + 1;这样得到最大流 maxflow / (E + 1),最少割边数 maxflow % (E + 1) 道理很简单,如果原先两类割边都是最小割,那么求出的最大流相等但边权变换后只有边数小的才是最小割了乘(E+1)是为了保证边数叠加后依然是余数,不至于影响求最小割的结果第二种:建图,得到最大流后,图中边若满流,说明该边是最小割上的边 再建图,原则:满流的边改 阅读全文
posted @ 2013-05-09 14:57 ihge2k 阅读(748) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2149首先介绍一下巴什博奕(BashGame):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。分析:显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获 阅读全文
posted @ 2013-05-09 14:21 ihge2k 阅读(394) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3452思路:一颗带边权的树,最小割求树根和叶子结点不连通。可设汇点为n+1,注意只用叶子结点才能和汇点连容量为inf的边。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<set> 6 using namespace std; 7 #define MAXN 2222 8 #define MAXM 阅读全文
posted @ 2013-05-09 13:58 ihge2k 阅读(226) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1579所谓记忆化,简单理解就是dfs+dp,水题不多说了。。。View Code 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 55 6 int dp[MAXN][MAXN][MAXN]; 7 8 //记忆话搜索 9 int dfs(int a,int b,int c){10 if(a20||b>20||c>20)return dfs(20,20,20);12 if(dp[a][b][... 阅读全文
posted @ 2013-05-09 12:57 ihge2k 阅读(283) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2151View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define MAXN 111 6 int dp[MAXN][MAXN]; 7 //dp[i][j]表示第i分钟在第j棵树时的方案数 8 //dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1]; 9 10 int main(){11 int n,m,p 阅读全文
posted @ 2013-05-07 23:19 ihge2k 阅读(245) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3251思路:选择1为源点,n+1为汇点,然后原图中每条边为新图的边,容量为边权,最后将每个可以选择的点与汇点连接,容量为点权,这样跑一遍最大流之后,求出最小割,然后所有的总收益减去最小割就是可能的最大收益了。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define MAXN 1111 6 #define MAXM 44 阅读全文
posted @ 2013-05-07 22:39 ihge2k 阅读(348) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3657思路我就不详细讲了,这位大牛讲的很清楚:http://blog.csdn.net/cold__v__moon/article/details/7924269View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define MAXN 55 5 #define MAXM 55*55 6 #define inf 1<<30 7 using namespace 阅读全文
posted @ 2013-05-07 17:16 ihge2k 阅读(464) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4394思路:n的个位可以由m的个位确定,n的十位可以由m的个位和十位确定,以上同理,故直接bfs搜索就可以,先搜个位满足要求的,然后在满足要求的个位上扩展到十位上(其实就是就是在个位数前加个数,变成2位数)。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #include<cmath> 6 using name 阅读全文
posted @ 2013-05-07 14:28 ihge2k 阅读(297) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1240思路:就是一个简单的bfs,但我搞了好久啊,有一个trick一直没注意到,然后第二组数据就一直过不了。。。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #include<cmath> 6 using namespace std; 7 #define MAXN 17 8 char map[MAXN][MA 阅读全文
posted @ 2013-05-06 22:45 ihge2k 阅读(298) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1354思路:最麻烦的就是字符串处理了,但sscanf函数功能相当强大,orz....然后dfs就可以了,但才过了18个人。View Code 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define MAXN 333 8 struct Node{ 9 int f1,f2;10 }C[MAXN];11 char str[MAXN];12 int path[MAXN];13 b... 阅读全文
posted @ 2013-05-06 20:57 ihge2k 阅读(186) 评论(0) 推荐(0)
上一页 1 ··· 96 97 98 99 100 101 102 103 104 ··· 121 下一页