上一页 1 ··· 37 38 39 40 41 42 43 44 45 ··· 48 下一页
  2012年6月10日
摘要: http://poj.org/problem?id=3686拆点+KM算法题目大意:n个玩具在m台机器上完成所需时间个不同一台机器只有完成一个玩具的的制作才能继续完成其它的问你n给玩具完成制作最小平均时间思路转自http://blog.sina.com.cn/s/blog_6af663940100mw9t.html此题构图很巧妙。设n个订单的执行时间分别为t1,t2…tn,则n个订单的总的执行时间是t1*n+t2*(n-1)+t3*(n-2)+…+tn-1*2+tn。将每个机器j拆成n个点,第k个点表示倒数第k个订单在此机器上完成,连边权值为:tmp[i][j]*k。这样就转换成了求二分图最小 阅读全文
posted @ 2012-06-10 16:22 夜-> 阅读(199) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2400KM最大匹配第一次KM的题目详解就不说了 可以看这里:http://blog.163.com/huangbingliang@yeah/blog/static/94161399201011291044527/我的代码和思路基本上市抄了别人的不过还是要整理一下1,KM 求最佳匹配2,dfs求所有答案还是看代码吧:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue> 阅读全文
posted @ 2012-06-10 13:30 夜-> 阅读(247) 评论(0) 推荐(0) 编辑
  2012年6月8日
摘要: http://poj.org/problem?id=2914此题和 hdu 3691 Nubulsa Expo几乎一样不再解释代码:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int INF=0x7fffffff;const int N=505;int a[N][N];int dist[N];bool visited[N],dele[N];int n,m;int nd1,nd2;void Prim(){ int st=1; while(dele[st 阅读全文
posted @ 2012-06-08 10:58 夜-> 阅读(196) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3691Stoer-Wagner算法 不理解不理解呀大体步骤是这样子的1,用类似Prim 的过程求得最后更新点 和倒数第二更新点2,求最后更新点和其它点的割集3,将最后一个点合并到倒数第二个更新点上代码:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int INF=0x7fffffff;const int N=305;int a[N][N];int dist[N];bo 阅读全文
posted @ 2012-06-08 10:44 夜-> 阅读(254) 评论(0) 推荐(0) 编辑
  2012年6月5日
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4155题目大意:1,2,3,4,5,6 大小的牌 各有4张已经选了一些 可能继续选,可能不继续问谁会赢思路:无论该谁选 他的所有可供选择的牌中 只要有一张牌使他胜利(使对方输) 他就会胜利 否则就会输注意:输入用scanf();代码及其注释:#include<iostream>#include<cstring>#include<stack>#include<cstdio>#include<math.h>#include<algorithm> 阅读全文
posted @ 2012-06-05 17:48 夜-> 阅读(164) 评论(0) 推荐(0) 编辑
  2012年6月4日
摘要: http://poj.org/problem?id=3352题目大意:给你n个旅游点 m条路已知任意两点之间直接或间接相通,两点之间最多一条直达路(没有重边)但是如果修理某一条路的话 就会使得这条路不能用,就会出现某两点不通的现象所以要再建几条路使得任意两点之间至少有两条没有公共边的路径问至少多建几条边?方法:1,缩点2,建新树3,求叶子节点注意:由于是双向边,处理起来要谨慎。假设叶子节点数时 v至于为什么最后答案是(v+1)/2 (只有一个根结点特判)我们可以这么想如果v为偶数 任意两叶子结点之间连一条边 那么这两个叶子结点到根结点的路径上的点就全在环上了 所以至少是v/2如果是v为奇数 任 阅读全文
posted @ 2012-06-04 11:52 夜-> 阅读(161) 评论(0) 推荐(0) 编辑
  2012年6月3日
摘要: http://poj.org/problem?id=3114题目大意:n个间谍 他们之间传送信息需要一定的时间一个联通分量里面的间谍属于一个国家,之间的信息传递不需要时间然后问你从一个间谍传一个信息到另一个间谍那需要最少时间 也可能传不到联通缩点+最短路缩点所得到的新图 可能是因为有重边或是太稠密 用邻接表容易超时基本步骤:1,输入去重边2,Tarjan缩点3,重新调整缩点后间谍之间的信息传递时间4,最短路注意: 图有可能不完全连通代码及其注释:#include<iostream>#include<cstring>#include<stack>#includ 阅读全文
posted @ 2012-06-03 17:22 夜-> 阅读(186) 评论(0) 推荐(0) 编辑
  2012年6月1日
摘要: http://poj.org/problem?id=3592每次做联通分量的题都是细节方面出错 伤不起呀一张图 有些点是有矿可走 有些不可走 有些是时空转换点矿车从左上开始走问最多能才多少矿1,把二维图变成一维 由于时空转换点的存在使图存在了环2,缩点 把环缩成一个点3,重新建树,4,搜索最多矿以后再也不在Tarjan里进行重建图了 太容易出错了果断在Tarjan后再dfs重新建图 虽然效率低了点但是不容易出错而且只要整体算法选择正确 是不会超时的由于数据小 所以dfs搜索最多矿就可以 不过要标记代码及其注释:#include<iostream>#include<cstrin 阅读全文
posted @ 2012-06-01 20:06 夜-> 阅读(215) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2186给你n头牛 他们之间会有一种 A认为B popular 的关系 而且这种关系是可传递的问你有多少头牛是被所有其他的牛认为popular1,缩点 将一个联通分量内的点缩成一个2,缩点同时记录联通分量内点的个数3,缩点后图变成了树 或者是 (非树)森林 如果是树 则树根连通分量内的点就是答案 如果是森林 答案为0 生成的树或森林 根方向上是被指向的。4,由于3的原因 搜索时还有注意标记哪些缩点是没有可能成为根的缩点5,如果根缩点只有一个(树) 则根就是答案 如果多个(非树森林)则为0注意 Tarjan 搜索是并不一定一次就能将所有的点搜干 阅读全文
posted @ 2012-06-01 09:53 夜-> 阅读(172) 评论(0) 推荐(0) 编辑
  2012年5月31日
摘要: http://poj.org/problem?id=2942弄了一天 终于搞定伦理知识我建议看这里 http://blog.csdn.net/lyy289065406/article/details/6756821讲的很详细 不过代码的风格不是很好接受刚开始我以为是所有的骑士全围着一张桌子坐后来才知道某个骑士只要能和任意其他符合要求的骑士组成一个会议小组他就可以留下开会条件:a 骑士的数量必须是奇数而且不能是1b 他的两个邻居不是他仇恨的给出原图后建补图求点的双联通对补图每求一个割点就对其进行操作出栈操作 但是联通根点不出栈 (因为它可能属于其他的联通图)对其联通图进行遍历 对所有的奇环内的点 阅读全文
posted @ 2012-05-31 19:41 夜-> 阅读(175) 评论(0) 推荐(0) 编辑
上一页 1 ··· 37 38 39 40 41 42 43 44 45 ··· 48 下一页