随笔分类 - 强连通
摘要:题意:有N个武士,衡量每个武士的综合实力由三个因素:length of the lightsaber, Force, Light side in this order,如果一个武士的其中任意两项大于另一个武士,那么他会获得胜利,题目要求可能获得最后胜利的那个人。获得最后胜利就是打败所有的人。思路:如果A可以打败B,B可以打败C,C又可以打败A的话,那么总是存在一种方案可以使这其中的任何一人获得最后的胜利,所以先进行缩点,然后建树,此时树的根节点里的所有人都有可能获得最后的胜利。代码:View Code #include <stdio.h>#include <stdlib.h&
阅读全文
摘要:题意:幼儿园里有N个盒子,每个盒子有一种颜色,每个盒子中可以装M个与盒子颜色相同的拼图,但是现在有些孩子将拼图放错了盒子,幼儿园老师要将放错的拼图放到正确的盒子里,她每次可以拿一块拼图从这个盒子到另一个盒子,也可以什么都不拿都另一个盒子,问这个老师最少要移动多少次手才能整理好这些拼图。思路:求强连通分支。首先,在同一个强连通分支里的盒子之间是可以互换的,即颜色A的拼图放到了颜色B的盒子了,那么一定可以从颜色B的盒子里取出A然后放回颜色为A的盒子里,然后从A盒子了取出颜色不为A的拼图放回正确的盒子里,所以最少移动的次数就是放错拼图的个数。如果不是一个强连通分支,那么在整理完这个强连通分支里的盒子
阅读全文
摘要:寒假集训已经开始几天了,直到搬完宿舍才感觉安定下来,开始静下心了认真学习算法,这几天心无旁骛的学习,效率自然提了上来,感觉以前不熟的算法或是没想透的地方在做过两道题后都可以理解了,好好利用这十几天的集训,提高一下自己的水平吧~题意:IT公司有n名程序员,他们都认为自己是最优秀或第二优秀的程序员,公司的管理者打算将他们分到不同的开发小组里,分配的条件如下:(1、任意选出一名未被分配的程序员,然后给他建立一个开发小组,他作为当前程序员。(2、如果在他的同事中,他认为这个人比他优秀,那么这个比他优秀的人就不能被分配到其他小组,只能分配到这个小组,成为这个小组的当前程序员。题目要求这n名程序员最多和最
阅读全文
摘要:http://poj.org/problem?id=3114题意:给出N个城市和M条路,每封信可以从城市A到城市B花费时间ci,但路是单向的,如果两个城市可以互达,则这两个城市属于同一个国家,而一封信在同一个国家间传递不花费时间,然后给出K组查询,问从X到Y所花的最小时间。解题过程:这题和poj上的3592一样,先求出图中的强连通分支,缩点后去最短路,用的spfa求最短路,discuss里有人说floyd会超时,所以直接用了spfa,但是开始的时候数组开小了,找了好久才找出来。代码:View Code #include <stdio.h>#include <stdlib.h&
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3072最近为了CF上的一道题,又把强连通分支的tarjan算法看了一遍,为了加深印象,就做了HDU上的这题。。。。题意:有一个情报系统,要从0开始传播一个情报,如果两个人可以互达那么两人之间的传播费用为0 ,否则两人之间的传播费用为ci,求要情报传达到每个人的最小费用。思路:既然一个强连通分支内的传播费用为0,求图中有几个强连通分支,缩点后求各点之间的最小费用。代码:View Code #include <stdio.h>#include <stdlib.h>#include <
阅读全文
摘要:题意:给出一个N*M的矩形,每个小矩形里有的有一定数量的矿物,有的有传输的功能,有的不能通过,每个小矩形里的矿物只能采集一次,问你最多能过采集多少的矿物。思路:强连通分支+spfa,先求出强连通分支,在强连通分支中,所以点都是可达的,然后进行缩点,将每一个连通分支看做一个点,而这个点的矿物容量就是这个强连通分支中所有点的和,然后在用一下spfa求最大的矿物量。PS:因为没注意一个循环的长度,导致我查了一个下午加一个晚上,泪~~,细心!细心啊!代码:View Code #include <stdio.h>#include <stdlib.h>#include <st
阅读全文
摘要:题意:有N头牛,选出最受欢迎的牛,其中有M对A B,表示牛A认为牛B比较受欢迎,问你有多少牛最受欢迎。在学习强连通分支的Tarjan算法是,好多人提到这题时比较经典的强连通分支题,所以拿来练手了,熟悉一下Tarjan算法的实现过程。学习过程中还发现一篇讲解Tarjian算法很好的Blog,其中有图一步一步的讲解了Tarjan实现的过程,http://www.byvoid.com/blog/scc-tarjan/代码:View Code #include <stdio.h>#include <stdlib.h>#include <string.h>#inclu
阅读全文

浙公网安备 33010602011771号