摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 map判重即可: 1 //STATUS:G++_AC_0MS_376KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #include<vector>10 阅读全文
posted @ 2012-11-25 20:01 zhsl 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 建立图后,很容易发现是最小点覆盖。 1 //STATUS:G++_AC_0MS_400KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #include<vec 阅读全文
posted @ 2012-11-25 19:59 zhsl 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3686 这个题目容易想到拆点,开始我是直接拆点在求的,考虑到直接建图复杂度有点高,然后就在找增广路的同时再加点,因为并不是每个点都会达到50个,这样实际复杂度会好很多。敲完之后,样例过了,然后直接叫,WA!后来看了discuss顿然醒悟,找增光路的时候,之前的状态改变了,那么后面的状态也会改变,那么那样求下去就不一定是最优解!所有要保证所有的匹配之间是互补影响的!假设某个工作坊要处理K个命令,时间分别是t1,t2......tk,那么总共的时间就是k*t1+(k-1)*t2+......+tk。发现没有,如果k表示的是倒数第... 阅读全文
posted @ 2012-11-24 22:53 zhsl 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2594 裸的最小路径覆盖,直接匈牙利算法啦~ 最小路径覆盖=总点数-最大匹配数 1 //STATUS:G++_AC_1594MS_1700KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #include& 阅读全文
posted @ 2012-11-23 13:46 zhsl 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3041 很基础的最小点覆盖题目,把X,Y坐标轴上的点分别看做X集合和Y集合,然后如果有asteroid就连边,很容易看出就是把所有的边覆盖,即用最少的点覆盖所有的边。 最小点覆盖=最大匹配数 1 //STATUS:G++_AC_47MS_668KB 2 #include<stdio.h> 3 #include<math.h> 4 #include<stdlib.h> 5 #include<string.h> 6 #include<string> 7 #define LL 阅读全文
posted @ 2012-11-23 13:41 zhsl 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2400 话说光理解题意就搞了很久啊,说说题意吧:公司有n个管理者要招聘n个员工,所以每个管理者对每个员工进行面试,然后管理者和员工相互做出评价,每个管理者要对每个员工打分,同样每个员工要对每个管理者打分,分数越低评价越高,分数范围0,n-1。题目要求你对管理者和员工进行配对,要求所有配对的管理者和员工的分数之和最小,并且输出所有的情况。 这个题目的难点就是要求所有的情况,我一开始想的就是枚举全排列做了,但看到数据量n<15,枚举是O(n!),如果数据恶心点,那么也会超时!想了一天,实在是没有其他的方法啊!其实n<15也 阅读全文
posted @ 2012-11-21 19:46 zhsl 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2195 最佳完美匹配裸题,直接用KM算法求就可以了。 KM算法就是维护每个点的可行顶标,即始终有 l(x)+l(y)>=w(x,y)(求最大)、l(x)+l(y)<=w(x,y)(求最小),然后依次加边,求最大匹配,直到匹配是完美匹配即可。 1 //STATUS:G++_AC_0MS_764KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #inclu 阅读全文
posted @ 2012-11-19 13:55 zhsl 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2226 这题是POJ 3041的升级版本,很有意思,要求木板不能盖在草地上。那么这里我们可以把每行一连续‘*’的看做行,把每列连续的‘*’看做列,那么在建模就是POJ 3041的原题了。 看一个例子: 3 3 X集合 Y集合 .*. 010 020 *** ———> 222 123 .*. 033 020 那么再根据X,Y集合连边即可。 要覆盖图中所有的点,即二分... 阅读全文
posted @ 2012-11-19 09:56 zhsl 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2060 当时一看的题目,就想到用贪心搞,于是马上敲之,后来发现还是不行啊,比如4->2->3 1->2->3 1->5,有这样几条路径,然后贪心可能会出现这种结果:4->2->3 1 5,那么答案就是3了,但是这里显然答案是2啊! 然后就建图了,猛然发现是最小路径覆盖:把每条路径看做点集合,然后taxi能合法到达的建立边。题目要用最少的车,那么就是用最少的路径把图中的所用点覆盖了,即n-最大匹配数即可。 1 //STATUS:G++_AC_141MS_1708KB 2 #include&l 阅读全文
posted @ 2012-11-18 00:51 zhsl 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1486 这种题目一般都会想到贪心的做法吧,很直接也很方便。即直接找出度或入度为1的节点,然后删除,再接着找。。。 还有一种做法就是利用二分图的性质,首先求出最大匹配。当然这个最大匹配不是最终答案,因为可能匹配中会有不唯一的匹配,所以我们要求的就是一个唯一的且最大的匹配。那么我们可以在重新求一次增广路,把已经匹配的边依次删除,看当前匹配点还能不能找到增广路,如果能找到,那么这个点的匹配点就不唯一了,也就是非必须边,否则就是必须边。 贪心算法: 1 //STATUS:G++_AC_0MS_796KB 2 #include... 阅读全文
posted @ 2012-11-14 15:52 zhsl 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2449 K短路的经典题目,直接BFS优先队列扩展超memory,因此要用A*算法优化,先Dijkstal求出所有点到汇点的最短路,注意要把所有边反向,因为是有向图。f(x)=g(x)+h(x),h(x)是估价函数,当前点到汇点的最短路,g(x)是源点到当前点的花费。因为求出了所有点到汇点的最短路,所以进优先队列时,直接算到达汇点的花费加上到下个点的权值皆可。 当然还有很多其他的算法。 1 //STATUS:G++_AC_297MS_8340KB 2 #include<stdio.h> 3 #include<std 阅读全文
posted @ 2012-11-12 00:26 zhsl 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 以前的一些文章:http://blog.csdn.net/angle555945 阅读全文
posted @ 2012-10-28 15:49 zhsl 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 这些日子在纠结一个事情,我相信大多数人都有这样的困惑,就是acm和做项目之间的取舍。 回到一年前的今天,唐鹏学长一个短信,要我去参见acm。是我便飞奔到寝室,向他询问有关acm的事情,他让我先在HDU 11版A题。我本想着会很简单,于是马上去做了第2000题,按照我自记的想法,好不容易和输入输出格式一样后,本想着这代码肯定是正确的,兴高采烈的交了代码,让我感到诧异的是居然弹出了个Wrong answer!我当时就郁闷了,想这等弱智的题目未必还会WA?一度以为是OJ出了问题,于是再交了一遍,结果还是WA。于是不服气的问了问唐鹏学长,他说:多组数据,EOF。当时还不知道EOF是何方神物,于是... 阅读全文
posted @ 2012-10-28 15:24 zhsl 阅读(907) 评论(6) 推荐(1) 编辑
摘要: DescriptionOn Planet MM-21, after their Olympic games this year, curling is getting popular. But the rules are somewhat different from ours. The game is played on an ice game board on which a square mesh is marked. They use only a single stone. The purpose of the game is to lead the stone from the s 阅读全文
posted @ 2012-02-29 20:17 zhsl 阅读(220) 评论(0) 推荐(0) 编辑
摘要: DescriptionThe cornfield maze is a popular Halloween treat. Visitors are shown the entrance and must wander through the maze facing zombies, chainsaw-wielding psychopaths, hippies, and other terrors on their quest to find the exit.One popular maze-walking strategy guarantees that the visitor will ev 阅读全文
posted @ 2012-02-28 18:12 zhsl 阅读(136) 评论(0) 推荐(0) 编辑