建立k+1张图,在图与图之间,若在原图中x到y有边,就建立从 第i层的x 到 i+1层的y 建边,权值为0。代表一次免费机会。由于一旦到了第i+1层的图里,则无法回到之前的层,所以免费最多只有k次。符合题意。spfa会TLE。 1 #include 2 #include 3 #include 4 #...
分类:
其他好文 时间:
2014-09-30 11:42:49
阅读次数:
135
题目大意:一个有N个点m条边的无向图,可以将路径上k条边的权值变为0,试求此时1-n的最短路径长度。
Sol:我们考虑分层图思想,将图复制k+1份,分别是0~k层,表示此时已经经过的“免费边”条数。
层与层之间的边权值为0且为单向由上层指向下层。
这样我们以0层的1点做单源最短路径。每一层的n点的距离最小值即为答案。
只不过这样的点数为O(K*N),边数为O(K*M),比较慢。
...
分类:
其他好文 时间:
2014-09-19 15:42:55
阅读次数:
223
题目大意:N个点M条无向边,每个点有可能有红绿灯,或者是加油站,或者单单是一个点。红绿灯太多会让人烦,太久不加油车子就会开不动,问最多通过K次红绿灯,从“start”点到“end”点的最少花费是多少。
思路:只能最多通过K次红绿灯,可以依据这个建分层图。f[ i ][ j ]为在已经通过i次红绿灯后,在j点时的最小花费。这只是总体的思路,具体是实现起来还是有其他一些小问题。
题目中有一...
分类:
其他好文 时间:
2014-09-11 17:23:12
阅读次数:
220
题目大意:两个小屁孩要乘飞机去旅行。现在给一些无向边和边权,另外他们还有K次免费乘坐飞机的机会,问从起点到终点的最小话费是什么。
思路:分层图第一题。之前听到分层图还以为是真的建K个图,然后不同层数之间的点连边跑最短路。。后来经同学讲解才发现我想多了。。
其实还是动归的思想(最短路不也是动归的思想么(`?ω?´)),f[ i ][ j ]表示在j位置时,已经用了i次免费机会的时候的最小...
分类:
其他好文 时间:
2014-09-10 15:59:00
阅读次数:
209
题目大意:给定一个无向图,每条边有边权,有些点有点权,一些点是加油站,求一条起点到终点的最短路,使经过有点权的点不超过k次,一管油只能走limit的时间,时间到了就只能到加油站花cost的时间加油
那个红绿灯的计算公式是 red*red/2/(red+green) 考场上很多人没推出来这个挂掉了 我推出来不会写,写了爆搜,26分
限制条件有点多。。。考虑到k
首先我们枚举每一个加油站(起始点...
分类:
其他好文 时间:
2014-09-10 09:39:20
阅读次数:
1020