真的觉得好沧桑~(╯‵□′)╯︵┻━┻

什么辣鸡玩意儿?当我快乐地打dfs时50分时,别人都用bfs愉快地A了。

放几个数据:

3
1 1 1
1 1 1
1 1 1
ans:1 1


4
1 1 1 3
1 1 3 3
1 1 3 3
1 1 3 3

我的lj算法在某些数被同类包围时会错,因为此时的tot0和tot1都是0。

改进一下就好了。拜拜~

#include<cstdio>
#include<cctype>
#include<iostream>
using namespace std;const int N = 1002;
int Max, Min, ans1, ans0, n, G[N][N], dir[10][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}}, vis[N][N];void read(int &x) {x = 0;char s = getchar();while(! isdigit(s))s = getchar();while(isdigit(s)) {x = (x << 1) + (x << 3) + (s ^ 48);s = getchar();}
} int getSta(const int x, const int y) {int tot1 = 0, tot0 = 0;for(int i = 0; i < 8; ++ i) {int tx = x + dir[i][0];int ty = y + dir[i][1];if(tx < 1 || tx > n || ty < 1 || ty > n)continue;if(vis[tx][ty] == 2 && G[tx][ty] == G[x][y])return -1;if(G[tx][ty] > G[x][y])++ tot0;if(G[tx][ty] < G[x][y])++ tot1;}if(tot0 && tot1)return -1;if(tot0)return 0;if(tot1)//之前写法:else return 1;return 1;return 2;
}bool dfs(const int x, const int y, const int sta, const int cnt) {int S = getSta(x, y);bool flag = 0;if(S == -1 || (sta != S && sta != -1 && S != 2)) {vis[x][y] = 2;return 0;}for(int i = 0; i < 8; ++ i) {int tx = x + dir[i][0];int ty = y + dir[i][1];if(tx < 1 || tx > n || ty < 1 || ty > n || vis[tx][ty] || G[tx][ty] != G[x][y])continue;vis[tx][ty] = 1;if(dfs(tx, ty, S, cnt + 1) == 0)flag = 1;}if(flag) {vis[x][y] = 2;return 0;}return 1;
}int main() {int sta;read(n);Min = (1 << 30) - 1;for(int i = 1; i <= n; ++ i)for(int j = 1; j <= n; ++ j) {read(G[i][j]);Max = max(Max, G[i][j]);Min = min(Min, G[i][j]);}if(Max == Min)return ! printf("1 1\n");for(int i = 1; i <= n; ++ i) {for(int j = 1; j <= n; ++ j) {if(vis[i][j])continue;if(dfs(i, j, -1, 1)) {sta = getSta(i, j);if(sta == 1)++ ans1;else++ ans0;}}}printf("%d %d\n", ans1, ans0);return 0;
}

山峰和山谷 Ridges and Valleys相关推荐

  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. 山峰和山谷(信息学奥赛一本通-T1454)

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

  5. 1454:山峰和山谷

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

  6. BFS——山峰与山谷

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

  7. 【POI 2007】Ridges and Valleys山峰和山谷(GRZ)

    http://www.zybbs.org/JudgeOnline/problem.php?id=1102 八中题目描述太DT了--还是看这里: http://main.edu.pl/en/archiv ...

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

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

  9. [总结]2019年9月 OI学习/刷题记录

    从现在开始记录一下每天的学习情况.主力LOJ? 2019/9/5 LibreOJ #2543. 「JXOI2018」排序问题 答案显然是\(\frac{(n+m)!}{Cnt_1!Cnt_2!\cdo ...

  10. P3456 [POI2007]GRZ-Ridges and Valleys

    题意翻译 给定一个地图,为小朋友想要旅行的区域,地图被分为n*n的网格,每个格子(i,j) 的高度w(i,j)是给定的.若两个格子有公共顶点,那么他们就是相邻的格子.(所以与(i,j)相邻的格子有(i ...

最新文章

  1. python any()和all()
  2. 设置默认settings文件_Django 学习笔记系列 之 settings.py 设定
  3. php 单例类 mysql pdo_PHP实战:PHP基于单例模式编写PDO类的方法
  4. JavaScript闭包小窥
  5. select count(*) into 也会报 NO_DATA_FOUND 异常?!
  6. python简笔画怎么画_怎样用tk语句在Python下画一棵树
  7. python使用如下方法规范化数组_python – 根据数组的符号将数组中列的元素规范化为1或-1...
  8. word 的使用(四)—— 对齐与美观(表格)
  9. Mac OS 10.12 - 如何关闭Rootless机制?
  10. mysql 补丁 patch6_系统管理-第6部分――补丁(patch)管理和在线更新
  11. 经典路径规划算法分类概述(更新中)
  12. 开源考试系统 -微信小程序开发
  13. 最全人工智能专业术语表(中英文对照)
  14. oracle的dbv命令,Oracle的DBV命令行工具用法详解
  15. 火影忍者ol手游服务器注册上限怎么办,火影忍者ol手游服务器人数爆满怎么进_服务器爆满解决方法...
  16. 一篇文带你零基础玩转mysql触发器 | 超级干货,建议收藏
  17. 球球大作战显示短信服务器出错,球球大作战常见问题汇总 新版本问题解决方法...
  18. python 英文词语相似度 方法汇总
  19. 【踩坑记录】—— app运行闪退(Mac版)
  20. 拾叁-关于R语言中括号的一些事,以及因子、向量转换的一些情

热门文章

  1. matlab伽玛分布如何表示,matlab绘制gamma曲线
  2. Poodle Centos
  3. 微信红包服务器卡死,东大跨年红包记--并发案例分析
  4. 【转载】NP完全问题——最小曼哈顿网络
  5. ng : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\ng.ps1,因为在此系统上禁止运行脚本
  6. MySQL写Shell方法总结
  7. 自己对香港一卡通的总结
  8. 程序猿生存指南-55 初为人师
  9. 赵小楼《天道》《遥远的救世主》深度解析(109)天下乌鸦一般黑,不要幻想
  10. Jenkins企业应用