摘要:
当给出的数据无序的时候,不妨考虑先排序,排序以后或许能发现规律。本题正是要先对数据进行排序,不妨把所有公路按行驶速度从小到大排序。本题求最小速度比,由路径上的最大速度和最小速度决定。涉及两个要素的时候,不妨尝试通过枚举使一个要素固定下来。比如这道题,可以枚举最小速度。假如排序以后8条边如下:1 2 3 4 5 6 7 8先考虑最小速度取1的时候,最大速度取多少呢?2还是3?还是4?怎么找到最大速度呢?不难想到,只要把这些边从小到大依次加入,当加入某一条边的时候,出发点和目的地连通了,那最大速度就是这条边的权值。后面的边肯定不需要考虑了。然后再考虑最小速度取其他值的情况,如法炮制。原来这题就是考 阅读全文
posted @ 2013-12-19 20:10
莞中OI
阅读(257)
评论(0)
推荐(0)
摘要:
并查集的简单应用。Kruskal是求最小生成树的经典算法之一,如果忘记了,先做一下DGZX1042。Kruskal中每次挑选一条边加入最小生成树,就相当于将该边两个端点所在集合合并。#include #include #include #include using namespace std;int pa[3001];int rank[3001];int n, m;int ans;// answerint tot;// totalstruct node{ int x, y, z; };node tn[50000];int cmp(const void *pa, const void *pb){ 阅读全文
posted @ 2013-12-19 19:56
莞中OI
阅读(315)
评论(0)
推荐(0)
摘要:
并查集入门模板题。【C++版本】#include #include #include int pa[5001];int rank[5001];int n, m, p, a, b; void init(){ memset(pa,0,sizeof(int)*(n+1)); for (int i=1; iy do y:=father[y]; root:=y; {回到 s,重新往根的方向走} y:=s; while father[y]y do begin{路径压缩} x:=father[y]; father[y]:=root; y:=x; end; find:=r... 阅读全文
posted @ 2013-12-19 19:30
莞中OI
阅读(186)
评论(0)
推荐(0)

浙公网安备 33010602011771号