上一页 1 ··· 44 45 46 47 48 49 50 51 52 ··· 61 下一页
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054思路:最小顶点覆盖 == 最大匹配(双向图)/2。。。不过一开始是用邻接矩阵,傻傻的TLE。。。然后搞了个vector,建立邻接表。。。View Code 1 #include<iostream> 2 #include<vector> 3 const int MAXN=1507; 4 using namespace std; 5 int n; 6 bool mark[MAXN]; 7 int lx[MAXN],ly[MAXN]; 8 vector<int>m 阅读全文
posted @ 2013-04-04 16:15 ihge2k 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1712思路:这是一道简单的分组背包,因为每种课可以有多种选择:花几天时间在该课上。一旦作出选择,就不能再选该课,就相当于有多组物品,每组内的物品互相冲突,最多只能选一件。伪码:for 所有的组k for v=V..0 for 所有的i属于组k f[v]=max{f[v],f[v-c[i]]+w[i]}View Code 1 #include<iostream> 2 const int MAXN=110; 3 using namespace std; 4 i... 阅读全文
posted @ 2013-04-04 11:31 ihge2k 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068感觉这篇博客写的不错:http://www.felix021.com/blog/read.php?2040我就直接上代码了。。。View Code 1 #include 2 #include 3 const int N=110010; 4 using namespace std; 5 int len; 6 int p[Ni){17 p[i]=min(p[(idmx){22 mx=p[i]+i;23 id=i;24 ... 阅读全文
posted @ 2013-04-04 10:33 ihge2k 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1723思路:dp,不多说了,说多了都是泪啊。。。View Code 1 #include<iostream> 2 const int N=77; 3 using namespace std; 4 5 int main(){ 6 int n,m; 7 while(~scanf("%d%d",&n,&m)){ 8 if(n==0&&m==0)break; 9 int dp[N];10 memset(dp,0,sizeof(dp));11.. 阅读全文
posted @ 2013-04-03 22:14 ihge2k 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2813思路:用STL的map把字符串映射为序号。。。差点就超时了。。。orz。。。弱渣不敢写字典树啊!!!View Code 1 #include<iostream> 2 #include<map> 3 #include<string> 4 const int MAXN=222; 5 const int inf=1<<30; 6 using namespace std; 7 int n,m,k; 8 int match[MAXN]; 9 int lx[ 阅读全文
posted @ 2013-04-03 21:17 ihge2k 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2282思路:建图很重要,一个二分图最优匹配的题目。如果我们要移动巧克力,最后一定是把盒子中多余的巧克力移到空盒子中去,那么我们不妨以多出的每个巧克力以及每个空盒子为研究对象,这样每个巧克力只能放到一个空盒子中,每个空盒子也只能放一个巧克力,于是就可以构成一个二分图去求最优匹配了,其中边权为巧克力和空盒子的最短距离。View Code 1 #include<iostream> 2 const int MAXN=507; 3 const int inf=1<<30; 4 usin 阅读全文
posted @ 2013-04-03 17:59 ihge2k 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3718思路:题目求的是两字符串的最大相似度思路:因为第一个串的一种字母只能匹配第二个串的一种字母,所以可以转化为求【字母的最大匹配值/n】建图:【例】View Code 1 #include<iostream> 2 #include<string> 3 const int MAXN=30; 4 const int inf=1<<30; 5 using namespace std; 6 int match[MAXN]; 7 int lx[MAXN],ly[MAXN] 阅读全文
posted @ 2013-04-03 09:00 ihge2k 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3488思路:KM算法求最小权。。。ps:任何完全图的二分匹配其实就是n个环的并View Code 1 #include<iostream> 2 const int MAXN=222; 3 const int inf=1<<30; 4 using namespace std; 5 int n,m; 6 int map[MAXN][MAXN]; 7 int lx[MAXN],ly[MAXN]; 8 int match[MAXN]; 9 bool visitx[MAXN],visi 阅读全文
posted @ 2013-04-02 22:35 ihge2k 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853二分匹配,求最小权,只要一开始先取相反数,lx初始化的时候取无穷小。。。然后KM一敲,最后输出在取相反数就行了。。。值得一提的是,我这种渣代码,竟然跑了个rank 1。。。orz。。。View Code 1 #include<iostream> 2 const int MAXN=110; 3 const int inf=1<<30; 4 using namespace std; 5 int n,m; 6 int map[MAXN][MAXN]; 7 int lx[MAX 阅读全文
posted @ 2013-04-02 21:33 ihge2k 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1533题意:给你一个N行M列的矩阵,其中“.”代表空地,“H”代表房子,“m”代表人,其中有n个房子和n个人。现在要求每个人进入一间房子,且人走一步需要支付1美元。求最小需要花费多少美元才能让所有人都进入到房子中(每个人只能进入一间房子,每个房子只能容纳一个人)。思路:就是一个二分图最优匹配的变形,所以说建图很重要啊!!!(把‘m'的坐标计入到X集,’H‘的坐标计入到Y集)在建图的时候,将每条边的权值变为负数。然后lx[i]初始化为-inf,结果输出-ans,就可以得到最小权值View Co 阅读全文
posted @ 2013-04-02 18:31 ihge2k 阅读(630) 评论(0) 推荐(0) 编辑
上一页 1 ··· 44 45 46 47 48 49 50 51 52 ··· 61 下一页