UVA - 12130 Summits
来源:互联网 发布:linux扩大home空间 编辑:程序博客网 时间:2024/05/29 14:58
Description
Problem G - Summits
Time limit: 8 seconds
You recently started working for the largest map drawing company in theNetherlands. Part of your job is to determine what the summits in aparticular landscape are. Unfortunately, it is not so easy to determinewhich points are summits and which are not, because we do not want tocall a small hump a summit. For example look at the landscape given bythe sample input.
We call the points of height 3 summits, since there are no higherpoints. But although the points of height 2, which are to theleft of the summit of height 3, are all higher than or equal totheir immediate neighbours, we do notwant to call them summits, because we can reach a higher point fromthem without going to low (the summits of height 3). In contrast,we do want to call the area of height 2 on the right a summit, sinceif we would want to walk to the summit of height 3, we first have todescend to a point with height 0.
After the above example, we introduce the concept of a d-summit. Apoint, with heighth, is a d-summit if and only if it isimpossible to reach a higher point without going through an area withheight smaller than or equal toh-d.
The problem is, given a rectangular grid of integer heights and aninteger d, to find the number of d-summits.
Input
On the first line one positive number: the number of testcases, atmost 100. After that per testcase:
- One line with three integers 1 ≤ h ≤ 500, 1 &le w ≤ 500 and 1 ≤ d ≤ 1000000000. h and w are the dimensions of the map. d is as defined in the text.
- h lines with w integers, where the xth integer on theyth line denotes the height 0 ≤ h ≤ 1000000000 of the point (x,y).
Output
Per testcase:
- One line with the number of summits.
Sample Input
16 10 20 0 0 0 0 0 0 0 0 00 1 2 1 1 1 1 0 1 00 2 1 2 1 3 1 0 0 00 1 2 1 3 3 1 1 0 00 2 1 2 1 1 1 0 2 00 0 0 0 0 0 0 0 0 0
Sample Output
4
题意:多么费解的题目啊,找顶点,如果一个点是最高的话那么就是顶点,如果不是的话,但是它到比它到的点的路径中如果有<=h-d(h为该点的高度)那么就不能去,那么它就是顶点
思路:首先找个性质:如果A->B,C->B,如果HA>HC,因为HA-d>HC-d,那么C->A,所以我们先按高度排序,然后逐个BFS,如果它的周围能找到跟它一样高的点,那么这些点都是顶点,如果遇到已经被较高找到的点,那么它就也可以到那个较高的点,那么它就不是顶点
#include <iostream>#include <cstring>#include <cstdio>#include <vector>#include <algorithm>#include <queue>using namespace std;const int MAXN = 510;struct node {int x, y, h;node(int _x = 0, int _y = 0, int _h = 0) {x = _x;y = _y;h = _h;}} arr[MAXN*MAXN];int map[MAXN][MAXN];int vis[MAXN][MAXN];int n, m, d;int cnt;int dx[4]={1, -1, 0, 0};int dy[4]={0, 0, 1, -1};queue<node> q;int cmp(node a, node b) {return a.h > b.h;}void cal() {memset(vis, -1, sizeof(vis));int ans = 0;while (!q.empty())q.pop();for (int i = 0; i < cnt; i++) {node cur = arr[i];if (vis[cur.x][cur.y] != -1)continue;int flag = 1;int bound = cur.h - d;int top = cur.h;q.push(cur);int tot = 1;while (!q.empty()) {cur = q.front();q.pop();vis[cur.x][cur.y] = top;for (int i = 0; i < 4; i++) {int nx = cur.x + dx[i];int ny = cur.y + dy[i];if (nx < 1 || ny < 1 || nx > n || ny > m)continue;if (map[nx][ny] <= bound)continue;if (vis[nx][ny] != -1) {if (vis[nx][ny] != top)flag = 0;continue;}node tmp;tmp.x = nx, tmp.y = ny, tmp.h = map[nx][ny];vis[nx][ny] = top;if (tmp.h == top) tot++;q.push(tmp);}}if (flag) ans += tot;}printf("%d\n", ans);}int main() {int t;scanf("%d", &t);while (t--) {scanf("%d%d%d", &n, &m, &d);cnt = 0;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++) {scanf("%d", &map[i][j]);arr[cnt++] = node(i, j, map[i][j]);}sort(arr, arr+cnt, cmp);cal();}return 0;}
- UVA - 12130 Summits
- uva 12130 - Summits(BFS)
- UVA 12130 - Summits(BFS+贪心)
- Summits poj3503
- UVA12130 Summits(BFS + 贪心)
- JZOJ. 3450 山峰 summits
- poj3503 Summits DFS
- POJ 3503 Summits
- UVALive - 3977 Summits (BFS染色)
- F - Summits解题报告(来自网络)
- 【NOIP2013模拟联考3】山峰(summits)
- Hrbust 1517 Summits【Bfs+思维+贪心】好题~
- jzoj. 3450. 【NOIP2013模拟联考3】山峰(summits)
- jzoj3450【NOIP2013模拟联考3】山峰(summits,dfs)
- 3450. 【NOIP2013模拟联考3】山峰(summits) (Standard IO)
- 2017-07-08【NOIP提高组】模拟赛B组-山峰(summits)-题解
- uva
- UVA
- ASIHttpRequest详解
- 使用Spring框架的12个开源项目
- ArcGIS 坐标系统文件
- mysql 多次连接
- 还有人不知道嘛?jquery和jQuery Mobile的区别
- UVA - 12130 Summits
- QtCreator 模块/视图编程( 二) 项目选择,QItemSelectionModel
- ASP.NET MVC IOC 之Ninject攻略
- Find k closest elements to a given value
- P2P通信模型
- 耳机及音响--煲机软件
- JQuery对表单元素的基本操作使用总结
- 对偶四元数(1):对偶四元数的基本性质及线性混合
- ASP.NET MVC IOC 之Ninject攻略