摘要:
又是一道改变松弛条件的题目,因为查询不是一组,所以用floyd比较快。解题过程:题目很容易理解,就是从一个点A到另一个点B的所有路中最大高度中的最小值。因为有多组查询,用floyd求任意两点间的最小值,改变一下map[i][j]里的存储,存储点i到点j的所有路中的最大高度的最小值就行了。代码:View Code #include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>#include <math. 阅读全文
摘要:
最近几天一直在做搜到的一些中级最短路题目,做得多了也有了一点感觉,觉得中等最短路一般不是建图麻烦些,就是松弛的条件要改变一下得到所求。其实了解透了几种最短路求解方法就很简单了。解题过程:一颗有N个节点的树,点1是根节点,每个节点都有一个权值,每两个节点的边都有一个代价,定义一棵树的花费为每条边的代价为该边所有子孙节点权值之和乘以该边的权值。例如点1到点2的边的代价为w1,点2到点3的边的代价为w2,得出下面等式:(d1+d2+d3)*w1 = d1*w1 + d2*w1 + d3*w1 (d1+d2+d3+d4)*w2 = d1*w2 + d2*w2 + d3*w2 + d4*w2加起来的:s 阅读全文