上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 61 下一页
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3917思路:就是一个最大权闭包的模型,解法为求最小割,构图方法以公司为点,如果公司之间有关系,则连一条容量为无穷的有向边,对每个公司,如果该公司收益为正,则从vs到该公司连一条容量为收益的有向边,如果为负,向vt连一条容量为该公司收益绝对值的边,为0时选和不选不影响结果,可以舍去。其消费为所有收益和-所选割中正收益-所有割中负收益(减去负的即为加上绝对值),然后求出最小割,最后相减即可。(胡伯涛的论文《最小割模型在信息学竞赛中的应用》里面有这个模型)View Code 1 #include<i 阅读全文
posted @ 2013-05-10 20:38 ihge2k 阅读(635) 评论(0) 推荐(0) 编辑
摘要: 几道搜索水题,搜索要点就是不断剪枝,必要时还要不断恢复路径。慢慢体会递归的强大!!!题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1342View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define MAXN 55 6 int num[MAXN]; 7 int path[MAXN]; 8 int k,len; 9 10 void dfs(int x,int cnt){1 阅读全文
posted @ 2013-05-10 17:01 ihge2k 阅读(525) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2516思路:网上大牛说是著名的斐波那契博弈模型:首先 2个石头肯定是必败点,3个石头也是必败点,然后开始看后面,4个石头时,可以去一个使对手到必败点,而对手在这种情况下在必败点是不能赢得,所以4是必胜点。但是后面5个石头的情况就不同了,因为5个石头 你肯定不会sb的走到4这个必胜点让对手赢, 但是你发现走到3时,在3这个位置可以直接获胜。 所以5是必败点。View Code 1 #include<iostream> 2 #include<cstdio> 3 using nam 阅读全文
posted @ 2013-05-09 23:54 ihge2k 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1847思路:首先我们知道3是必败点,然后类似于巴什博弈,直接对n%3考虑就行了。View Code 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 int main(){ 6 int n; 7 while(~scanf("%d",&n)){ 8 n%3==0?puts("Cici"):puts("Kiki"); 9 }10 阅读全文
posted @ 2013-05-09 23:32 ihge2k 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1907思路:尼姆博弈变形。View Code 1 #include<iostream> 2 using namespace std; 3 4 int main(){ 5 int _case; 6 scanf("%d",&_case); 7 while(_case--){ 8 int n,x,sum=0,count=0; 9 scanf("%d",&n);10 for(int i=1;i<=n;i++){11 ... 阅读全文
posted @ 2013-05-09 19:47 ihge2k 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 题目链接: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 阅读(726) 评论(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 阅读(377) 评论(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 阅读(212) 评论(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 阅读(266) 评论(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 阅读(225) 评论(0) 推荐(0) 编辑
上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 61 下一页