http://www.zybbs.org/JudgeOnline/problem.php?id=1102

  八中题目描述太DT了……还是看这里:

  http://main.edu.pl/en/archive/oi/14/grz

  

  水题不解释……(我颓废了)

  bfs记录一下高度相同的联通块,然后暴力枚举联通块的周围有木有比他还高(矮)的……完了……

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;const int px[8]={-1,-1,0,1,1,1,0,-1};
const int py[8]={0,1,1,1,0,-1,-1,-1};
int map[1001][1001],x[1000001],y[1000001],n,valleys,ridges;
bool vis[1001][1001];bool check(int pos,char sym){for(int k=1;k<=pos;k++)for(int i=0;i<8;i++){int xx=x[k]+px[i],yy=y[k]+py[i];if(!(xx>0&&xx<=n&&yy>0&&yy<=n)) continue;if((sym=='v'&&map[xx][yy]<map[x[k]][y[k]])||(sym=='r'&&map[xx][yy]>map[x[k]][y[k]])) return false;}return true;
}           void bfs(int posx,int posy){int head=1,tail=0,xx,yy;x[++tail]=posx,y[tail]=posy;while(head<=tail){for(int i=0;i<8;i++){xx=x[head]+px[i],yy=y[head]+py[i];if(!(xx>0&&xx<=n&&yy>0&&yy<=n&&map[xx][yy]==map[posx][posy]&&!vis[xx][yy])) continue;vis[xx][yy]=true;x[++tail]=xx,y[tail]=yy;}head++;}if(check(tail,'v')) valleys++;if(check(tail,'r')) ridges++;
}int main(){scanf("%d",&n);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) scanf("%d",&map[i][j]);memset(vis,false,sizeof(vis));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(!vis[i][j]) bfs(i,j);printf("%d %d\n",ridges,valleys);return 0;
}

转载于:https://www.cnblogs.com/Delostik/archive/2011/08/11/2134526.html

【POI 2007】Ridges and Valleys山峰和山谷(GRZ)相关推荐

  1. 山峰和山谷 Ridges and Valleys(bfs)

    山峰和山谷 Ridges and Valleys 题意 水平竖直和斜方向是一个点数值的比较对象,一共八个.相同的的高度可以连接在一起,形成山谷.山峰或者啥都不是.如果对于一个连接在一起的一块地方,其任 ...

  2. 【ybt高效进阶1-5-2】【luogu P3456】山峰和山谷 / GRZ-Ridges and Valleys

    山峰和山谷 / GRZ-Ridges and Valleys 题目链接:ybt高效进阶1-5-2 / luogu P3456 题目大意 对于山谷和山峰,我们这样定义: 它们是一个连通块(其中的高度都相 ...

  3. 【搜索】训练题J-山峰和山谷 Ridges and Valleys

    题意 棋盘每个数字表示高度,四周高中间低为山谷,反之为山峰,要求统计山峰和山谷的数量 思路 枚举每个点,对每个点进行对8个方向跑bfs,判断该方块周围的高度情况. 代码 #include<ios ...

  4. BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)

    BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块) 手动博客搬家: 本文发表于20171216 13:34:20, 原地址https://blog.csd ...

  5. 山峰和山谷(信息学奥赛一本通-T1454)

    [题目描述] 给定一个 n×n 的网格状地图,每个方格 (i,j)有一个高度 wij​​ .如果两个方格有公共顶点,则它们是相邻的. 定义山峰和山谷如下: 均由地图上的一个连通块组成: 所有方格高度都 ...

  6. 1454:山峰和山谷

    1454:山峰和山谷 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 93     通过数: 28 [题目描述] 给定一个 n×n 的网格状地图,每个方格 (i,j ...

  7. BFS——山峰与山谷

    山峰与山谷 所有相邻且高度相等的点为一个连通块,判定每个连通块分别是否为山峰山谷即可. #include<bits/stdc++.h> using namespace std; #defi ...

  8. 算法提高课-搜索-Flood fill算法-AcWing 1106. 山峰和山谷:flood fill、bfs

    题目分析 来源:acwing 分析:这道题还是flood fill算法的应用,不同点在于八个方向扫描,习惯性采用二重循环来扫描周围的8个方向:其次,这里需要统计周围比它高的和比它矮的,这点用bool变 ...

  9. 【POI 2007】Tetris Attack 正方体大作战(tet)

    http://www.zybbs.org/JudgeOnline/problem.php?id=1106 http://main.edu.pl/en/archive/oi/14/tet 题目大意:诶呀 ...

最新文章

  1. Banknote Dataset(钞票数据集)介绍
  2. SES机箱管理知识回顾(四)之SES Over SAS
  3. 【转】Direct3D顶点结构使用总结
  4. 并行算法第一讲:概念及目标
  5. python是什么意思中文-python是什么意思中文
  6. 计算机软考网络工程师历年真题,2019上半年软考网络工程师考试下午真题
  7. SQL语句批量替换某个指定的字符串
  8. jeb 高级教程之动态调试
  9. 拼多多数据分析工具有哪些?拼多多数据分析工具介绍
  10. 小猫钓鱼java代码,【Java个人笔记】练习-小猫钓鱼
  11. 嵌入式设备和固件中的自动漏洞检测(一):概览
  12. 基础: 有效值、RMS、振幅、幅度概念
  13. python 温度转换、货币转换
  14. OpenGL入门:窗口开启、改变窗口背景颜色
  15. android集成Crosswalk内核,屏蔽返回键问题。
  16. 网站反爬虫策略VS反反爬虫策略
  17. 嵌入式 ARM 控制器采用 NXP 的高性能处理器 I.MX6ULL
  18. html单元格上下拆分代码,在HTML/CSS如何垂直拆分表格单元格(特别版)
  19. 如何理解3D动画中的欧拉角以及死锁?
  20. cocos creator粒子不变色_Cocos Creator 3D 粒子系统初战: 不要钱的酷炫火焰拿走不谢!...

热门文章

  1. Promise 最完整介绍与实现解密
  2. JavaScript Promise 快速入门
  3. Extjs TreeNode的图标元素。 (节点图标, expand的加减号)
  4. ShardingSphere JDBC 语句执行初探
  5. 量子计算机 程序,量子计算机程序 会早于量子计算机出现
  6. python tkinter linux,用于Python和Tkinter的Linux上的字体管理
  7. Not so Mobile UVA - 839
  8. set学习(系统的学习)
  9. Oracle FGA审计的使用
  10. android键盘多线程bug,按键精灵多线程运用,检测卡死线程,短信api调用,通知功能...