您的位置:首页 > 其它

山峰

2015-08-11 15:15 141 查看

山峰

Description

定义了一种山峰叫做d-山峰。一个高度为h地点被称作d-山峰,只有满足从这里出发,在不经过小于等于h-d的地点的前提下无法达到比它更高的地方。

已知一个n*m的矩阵和d值,求d-山峰的个数

Sample Input

6 10 2

0 0 0 0 0 0 0 0 0 0

0 1 2 1 1 1 1 0 1 0

0 2 1 2 1 3 1 0 0 0

0 1 2 1 3 3 1 1 0 0

0 2 1 2 1 1 1 0 2 0

0 0 0 0 0 0 0 0 0 0

Sample Output

4

Data Constraint

30% n,m<=10

100% n,m<=500

30分:暴力,不解释

100分:我们将地图上的点全部按高度排序

从高到低操作,当做到第 i 个点时,将队列中所有高度大于 hi-d 的点

加入图中,并查集维护图中的联通块,和每个联通块中最大的值,当

一个点所在的联通块中没有比它更大的点,则此点便是要求的点。

时间复杂度O(n^2)

运用算法:并查集

做的时候,并没有做过类似的题,暴力跑了一遍,只拿了30分。

看了题解后,发现也不是那么难打,只是有个难题,就是并查集合并时的总父亲,最后设置了一个基准:编号大的为编号小的父亲。

附上代码思考

int fax=get(id[x][y]),fay=get(id[xx][yy]);
fa[fax]=fay;
top[fax]=top[fay]=max(top[fax],top[fay]);


总结完毕,写的不好,有问题欢迎指出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: