[Usaco2008 Nov]Guarding the Farm 保卫牧场
农夫约翰的牧场中有许多山丘。为了保护珍贵的奶牛,他希望在每座山丘的顶部安排一名守卫。请你计算他总共需要安排多少名守卫。
牧场的地形由一个包含 行、 列的整数矩阵表示,其中 表示第 行、第 列位置的海拔高度。
一个山顶由若干个相互连通且海拔相同的矩阵元素组成。山顶周围的所有位置必须是地图边界,或海拔严格低于山顶的矩阵元素。
若两个矩阵元素横坐标之差的绝对值不超过 ,且纵坐标之差的绝对值也不超过 ,则称它们相邻。
请计算地图中山顶的数量。
输入格式
第一行包含两个以空格分隔的整数 和 ,分别表示地图的行数和列数。
接下来 行,每行包含 个以空格分隔的整数。其中第 行的第 个整数为 ,表示地图中第 行、第 列位置的海拔高度。
输出格式
输出一个整数,表示地图中山顶的数量。
样例输入
8 7
4 3 2 2 1 0 1
3 3 3 2 1 0 1
2 2 2 2 1 0 0
2 1 1 1 1 0 0
1 1 0 0 0 1 0
0 0 0 1 1 1 0
0 1 2 2 1 1 0
0 1 1 1 2 1 0
样例输出
3
样例解释
地图中共有 个山顶,分别是左上角高度为 的山顶、右上角高度为 的山顶,以及地图底部高度为 的山顶。
数据范围
- ;
- ;
- 。
来源与许可
本题为 USACO 2008 年 11 月试题「Guarding the Farm」,题面与测试数据整理自 BZOJ 1619。
样例 1
输入
8 7
4 3 2 2 1 0 1
3 3 3 2 1 0 1
2 2 2 2 1 0 0
2 1 1 1 1 0 0
1 1 0 0 0 1 0
0 0 0 1 1 1 0
0 1 2 2 1 1 0
0 1 1 1 2 1 0
输出
3