P3456 [POI2007]GRZ-Ridges and Valleys(bfs)
P3456 [POI2007]GRZ-Ridges and Valleys
八个方向都跑一遍bfs,顺便判断一下是山峰还是山谷,或者是山坡(俩都不是)
(实在不知道要说啥了qwq)
#include<iostream> #include<cstdio> #include<cstring> #include<cctype> #include<queue> using namespace std; inline int Int(){char c=getchar(); int x=0;while(!isdigit(c)) c=getchar();while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=getchar();return x; } int d1[8]={0,1,0,-1,1,1,-1,-1}; int d2[8]={1,0,-1,0,1,-1,1,-1}; int n,a[1002][1002],ridge,valley; bool vis[1002][1002]; struct data{int x,y;}; inline void bfs(data f){queue <data> h; h.push(f);int p=-1; vis[f.x][f.y]=1; //p:该处的状态while(!h.empty()){data u=h.front(); h.pop();for(int i=0;i<8;++i){int r1=u.x+d1[i],r2=u.y+d2[i];if(r1<1||r1>n||r2<1||r2>n) continue;if(a[u.x][u.y]!=a[r1][r2]){if(p==-1) p=(a[u.x][u.y]>a[r1][r2]);else p= p==(a[u.x][u.y]>a[r1][r2]) ? p:2;continue; //直接写成这样方便(逃}if(!vis[r1][r2]) vis[r1][r2]=1; //标记记得打else continue;h.push((data){r1,r2});}}if(p==-1) ++ridge,++valley; //整个图都是一块相同海拔的else if(p==0) ++valley;else if(p==1) ++ridge; } int main(){n=Int();for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)a[i][j]=Int();for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)if(!vis[i][j])bfs((data){i,j});printf("%d %d",ridge,valley);return 0; }
转载于:https://www.cnblogs.com/kafuuchino/p/9588545.html
P3456 [POI2007]GRZ-Ridges and Valleys(bfs)相关推荐
- python扫雷 广度优先_Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper)...
Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tre ...
- 三十二、图的创建深度优先遍历(DFS)广度优先遍历(BFS)
一.图的基本介绍 为什么要有图 前面我们学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时, 这里我们就用到了图. 图的举例 ...
- Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)
对算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)用Java实现其中的伪代码算法,案例也采用算法导论中的图. import java.util.ArrayList; import java ...
- 【洛谷】马的遍历--广度优先搜索(BFS)
题目描述 传送门:https://www.luogu.com.cn/problem/P1443 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意 ...
- 二叉搜索树(BFS)总结
满二叉树 定义:高度为h,并且由2{h} –1个结点的二叉树,被称为满二叉树. 完全二叉树 定义:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上.这样的二叉 ...
- 广度优先搜索(BFS)与深度优先搜索(DFS)
一.广度优先搜索(BFS) 1.二叉树代码 # 实现一个二叉树 class TreeNode:def __init__(self, x):self.val = xself.left = Nonesel ...
- 二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)
二叉树的深度优先遍历(DFS)与广度优先遍历(BFS) 深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止.然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点 ...
- 层层递进——宽度优先搜索(BFS)
问题引入 我们接着上次"解救小哈"的问题继续探索,不过这次是用宽度优先搜索(BFS). 注:问题来源可以点击这里 http://www.cnblogs.com/OctoptusLi ...
- 从起始点到目标点的最短步数(BFS)
从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 在古老的魔兽传说中,有两个军团,一 ...
- 队列的JS实现及广度优先搜索(BFS)的实现
队列是先进先出(FIFO)的数据结构,插入操作叫做入队,只能添加在队列的末尾:删除操作叫做出队,只能移除第一个元素.在JS中,用数组可以很简单的实现队列. function Queue () {thi ...
最新文章
- 分享一个针对触摸设备优化的图片幻灯jQuery插件 - touchtouch
- ks检验正态分布结果_统计学里的数据正态性检验
- 【数据分析实例】1000 万条淘宝用户行为数据实时分析
- Docker-操作容器1
- java 参数命名冲突_Java中的命名参数
- scp和ssh如何连接指定端口的远程主机
- FreeSql (八)插入数据时指定列
- BI报表分析和数据可视化,推荐这三个开源工具!
- 积分图像追踪目标 (一)
- 说透Applet的数字签名之2——数字签名
- 网络赚钱,粉丝不是越多越好
- SQL Server中并行执行计划的基础
- HttpClient实现通过url下载文件
- python编程入门视频-2020年5个经典python编程入门视频教程推荐学习
- springboot学习笔记-3 整合redismongodb
- 经典的同态滤波算法的优化及其应用参数配置
- 中国 AI 天才养成计划:清华姚班和 100 个「张小龙」
- ubuntu16.04安装网易云音乐
- Windows搭建Sosoapi
- 中国微型连接器市场趋势报告、技术动态创新及市场预测