题目大意:坑爹的题目。题意那么难理解。

讲的就是,假设该点是山顶的话(高度为h)。那么以该点为中心,往外辐射。走高度大于h-d的点,到达不了还有一个比它高的点

这就提示了,高度要从大到小排序,依次以高的点(假设高度为h)为核心辐射,假设碰上高度小于等于h-d的。表示此路不通了。就在该处停止

反之。假设碰上高度大于h-d的,且没有被染色过的。那么就将其染色

假设碰上高度大于h-d的,且被染色的话,就表明能够走到还有一个更高点了,那么此点就不是山顶了

假设中途碰到了和该点一样高的,那么山顶的数量就加1

这里出现了失误,写代码的时候把M写成N了(定义数组的时候,本来是hight[M][M]的,结果写成了hight[N][N],这里N = 250010。M = 510),结果一直CE,非常郁闷,可是电脑上的编译却过了

后来我把结构体的定义拉到了后面,在电脑上编译就出错了。空间不足

这就有点郁闷了。结构体的定义顺序还影响到了编译?

假设有大神知道的。还望告知一下

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
#define N 250010
#define M 510 struct Node {
int x, y, h;
}node[N]; int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
int Ans, H, W, D;
int color[M][M];
int hight[M][M]; bool cmp(const Node &a, const Node &b) {
return a.h > b.h;
} struct tmp_node{
int x, y;
tmp_node() {}
tmp_node(int x, int y): x(x), y(y) {}
}; void bfs(int u) {
bool flag = true;
int tot = 1, lim = node[u].h - D, high = node[u].h; queue<tmp_node> Q;
Q.push(tmp_node(node[u].x, node[u].y));
color[node[u].x][node[u].y] = high; while (!Q.empty()) {
tmp_node t = Q.front();
Q.pop();
for (int i = 0; i < 4; i++) {
int x = t.x + dir[i][0];
int y = t.y + dir[i][1]; if (x >= H || x < 0 || y >= W || y < 0)
continue; if (hight[x][y] <= lim)
continue;
if (color[x][y] != -1) {
if (color[x][y] != high)
flag = false;
continue;
} if (color[x][y] == -1) {
color[x][y] = high;
Q.push(tmp_node(x,y));
}
if (hight[x][y] == high)
tot++;
}
}
if (flag)
Ans += tot;
} void solve() {
sort(node, node + H * W, cmp);
memset(color, -1, sizeof(color));
Ans = 0; for (int i = 0; i < H * W; i++)
if (color[node[i].x][node[i].y] == -1)
bfs(i);
printf("%d\n", Ans);
} int main() {
int test;
scanf("%d", &test);
while (test--) { scanf("%d%d%d", &H, &W, &D);
for (int i = 0; i < H; i++)
for (int j = 0; j < W; j++) {
scanf("%d", &node[i * W + j].h);
node[i * W + j].x = i;
node[i * W + j].y = j;
hight[i][j] = node[i * W + j].h;
}
solve();
}
return 0;
}

UVALive - 3977 Summits (BFS染色)的更多相关文章

  1. UVALive 3977 BFS染色

    这个题意搞了半天才搞明白 就是如果定义一个d-summit,即从该点到另一个更高的点,经过的路径必定是比当前点低至少d高度的,如果该点是最高点,没有比他更高的,就直接视为顶点 其实就是个BFS染色,先 ...

  2. UVA12130 Summits(BFS + 贪心)

    UVA12130 Summits(BFS + 贪心) 题目链接 题目大意: 给你一个h ∗ w 的矩阵,矩阵的每一个元素都有一个值,代表这个位置的高度. 题目要求你找出这个图中有多少个位置是峰值点.从 ...

  3. HDU 2444 二分图判断 (BFS染色)+【匈牙利】

    <题目链接> 题目大意: 有N个人,M组互相认识关系互相认识的两人分别为a,b,将所有人划分为两组,使同一组内任何两人互不认识,之后将两个组中互相认识的人安排在一个房间,如果出现单人的情况 ...

  4. 【Luogu】P1330封锁阳光大学(bfs染色)

    题目链接 这题恶心死我了. bfs染色,统计每个联通块两色的个数,ans加它们的最小值. #include<cstdio> #include<cctype> #include& ...

  5. XMU 1617 刘备闯三国之汉中之战 【BFS+染色】

    1617: 刘备闯三国之汉中之战 Time Limit: 1000 MS  Memory Limit: 128 MBSubmit: 6  Solved: 5[Submit][Status][Web B ...

  6. BFS(染色) LA 3977 Summits

    题目传送门 题意:题意坑爹.问符合条件的的山顶个数 分析:降序排序后从每个点出发,假设为山顶,如果四周的点的高度>h - d那么可以走,如果走到已经走过的点且染色信息(山顶高度)不匹配那么就不是 ...

  7. UVALive 6663 Count the Regions 离散+bfs染色_(:зゝ∠)_

    题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=4675">点击打开链接 gg.. ...

  8. What a Ridiculous Election UVALive - 7672 (BFS)

    题目链接: E - What a Ridiculous Election  UVALive - 7672 题目大意: 12345 可以经过若干次操作转换为其它五位数. 操作分三种,分别为: 操作1:交 ...

  9. UVA 12130 - Summits(BFS+贪心)

    UVA 12130 - Summits 题目链接 题意:给定一个h * w的图,每一个位置有一个值.如今要求出这个图上的峰顶有多少个.峰顶是这样定义的.有一个d值,假设一个位置是峰顶.那么它不能走到不 ...

随机推荐

  1. Android SDK使用国内镜像站,解决下载速度慢无法更新?

    1. 国内android开源镜像网站 下面是国内几个比較知名的开源网站.我用的是电子科技大学的镜像源,下载速度很快. mirrors.neusoft.edu.cn //东软信息学院 ubuntu.bu ...

  2. 《iOS Human Interface Guidelines》——Container View Controller

    容器视图控制器 容器视图控制器管理和展示它的子视图集合--或者子控制器集合--以一种自己定义的方式. 系统定义的容器视图控制器的样例有标签栏视图控制器.导航栏视图控制器和分栏视图控制器(查看Tab B ...

  3. Red Hat Enterprise Linux Server 5.5新增功能简介

    一.概况 昨日对刚发布的redhat新产品RHEL5.5进行了小范围的测试,红帽企业版 Linux 5.5 发行本中的亮点包括针对 Intel Boxboro-EX 平台.AMD Magny-Cour ...

  4. 全新linux中通过编译方式安装nginx

    先去官网下载linux.tar.gz包 http://nginx.org/en/download.html   传到linxu中 解压tar包 在软件包nginx-1.15.9目录下对NGINX进行配 ...

  5. RFID的基本组织构成

    RFID技术由3大组件构成, 包括: 阅读器.天线.标签三大组件. 阅读器 为RFID系统最重要也是最复杂的一个组件.因其工作模式一般是主动向标签询问标识信息, 所以有时又被称为询问器(Interro ...

  6. POJ--1753--Flip Game【DFS】

    链接:http://poj.org/problem? id=1753 题意:一个4*4的方格,有白棋或者黑棋.每次操作是一个位置的颜色翻转,即白变黑.黑变白,而且与它相邻的四个位置的颜色也都跟着改变, ...

  7. eclipse-hierarchyviewer 不能使用

    今天安装了adt-bundle以后,发现hierarchyviewer不能用.点开了以后连手机没有效果.后来发现,还需要进入hierarchyviewer所在的sdk目录进行下权限的设置 chmod ...

  8. ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第一篇:准备工作

    摘要      本文将简要介绍这个文章系列的目的.形式及大体内容.并且完成开始学习这个系列前所必要的准备工作. 前言      ASP.NET MVC作为微软官方的MVC解决方案,推出有一段时间了.可 ...

  9. 谈谈Command对象与数据检索

    摘要 到目前为止,我相信大家对于ADO.NET如何与外部数据源建立连接以及如何提高连接性能等相关知识已经牢固于心了.连接对象作为ADO.NET的主力先锋,为用户与数据库交互搭建了扎实的桥梁.它的一生是 ...

  10. 一个很详细的web.xml讲解(转)

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "- ...