【t048】水流
Time Limit: 1 second
Memory Limit: 128 MB
【问题描述】
全球气候变暖,小镇A面临水灾。于是你必须买一些泵把水抽走。泵的抽水能力可以认为是无穷大,但你必须把泵放在合适的位置
,从而能使所有的水能流到泵里。小镇可以认为是N * M的矩阵。矩阵里的每个单元格都是一个‘a’- ‘z’小写字母,该小写
字母表示该格子的高度,字母大的表示该单元格比较高,反之,表示该格子高度比较低。当前单元格的水可以流到上、下、左、
右四个格子,但必须满足这些格子的高度是小于或者等于当前格子的高度。现在,给你一些N * M的矩阵,你至少要买多少个泵
,才能把所有格子的水都能被抽走?
【输入格式】
多组测试数据。
第一行:K,表示有K组测试数据。 1 <= K <= 5.
接下来有K组测试数据,每组测试数据格式如下:
第一行:两个正数, N , M . 1 <= N, M <= 50,表示小镇的大小。
接下来有N行,每行有M个小写字母,表示小镇的地图。
【输出格式】
共K行,每行对应一组数据。至少要买多少个泵,才能把所有格子的水都能抽走。
Sample Input
2
5 5
ccccc
cbbbc
cbabc
cbbbc
ccccc
4 9
cbabcbabc
cbabcbabc
cbabcbabc
cbabcbabc
Sample Output
1
2
Sample Input2
1
11 11
ccccccccccc
caaaaaaaaac
caaaaaaaaac
caazpppzaac
caapdddpaac
caapdddpaac
caapdddpaac
caazpppzaac
caaaaaaaaac
caaaaaaaaac
ccccccccccc
Sample Output2
2
【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t048
【题解】
从最低点开始bfs,看它能到哪些位置;(水泵的位置放在最低点显然更优);
每次都从没有被覆盖过的部分里面找一个最低点进行bfs;
因为高度从’a’->’z’,所以枚举起点的高度为’a’->’z’即可;
遇到一个符合要求的起点就递增答案;
【完整代码】
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;
const int MAXN = 55;
const int dx[5] = {0,1,-1,0,0};
const int dy[5] = {0,0,0,1,-1};
int n,m;
int dt[MAXN][MAXN];
bool bo[MAXN][MAXN];
queue <pair<int,int> > dl;
int main()
{
//freopen("D:\\rush.txt","r",stdin);
int T;
cin >> T;
while (T--)
{
memset(bo,false,sizeof(bo));
cin >> n >> m;
for (int i = 1;i <= n;i++)
{
string s;
cin >> s;
for (int j = 0;j <=m-1;j++)
{
dt[i][j+1] = s[j]-'a';
bo[i][j+1] = true;
}
}
int ans = 0;
for (int mi = 0;mi <= 25;mi++)
for (int i = 1;i <= n;i++)
for (int j = 1;j <= m;j++)
if (dt[i][j] == mi&& bo[i][j])
{
ans++;
bo[i][j] = false;
dl.push(make_pair(i,j));
while (!dl.empty())
{
int x = dl.front().first,y = dl.front().second;
dl.pop();
for (int p=1;p <= 4;p++)
{
int tx = x+dx[p],ty =y+dy[p];
if (bo[tx][ty]&&dt[tx][ty]>=dt[x][y])
{
bo[tx][ty] = false;
dl.push(make_pair(tx,ty));
}
}
}
}
cout << ans << endl;
}
return 0;
}
【t048】水流的更多相关文章
- BZOJ3396: [Usaco2009 Jan]Total flow 水流
3396: [Usaco2009 Jan]Total flow 水流 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 45 Solved: 27[Sub ...
- Android自定义控件实战——水流波动效果的实现WaveView
转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38556891 水流波动的波形都是三角波,曲线是正余弦曲线,但是Android ...
- 水流(water)
水流(water) 题目描述 全球气候变暖,小镇A面临水灾,于是你必须买一些泵把水抽走.泵的抽水能力可以认为是无穷大,但你必须把泵放在合适的位置,从而能使所有的水能流到泵里.小镇可以认为是N×M的矩阵 ...
- 3396: [Usaco2009 Jan]Total flow 水流
3396: [Usaco2009 Jan]Total flow 水流 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 179 Solved: 73[Su ...
- [Swift]LeetCode417. 太平洋大西洋水流问题 | Pacific Atlantic Water Flow
Given an m x n matrix of non-negative integers representing the height of each unit cell in a contin ...
- ArcGIS基于DEM计算水流方向的方法(D8算法)
ArcGIS采用D8算法计算水流方向(9.3.1后新增),输入数据应首先完成了洼地填充处理: One of the keys to deriving hydrologic characteristic ...
- 水流(water)(BFS)(DFS)
水流(water) 时间限制: 1 Sec 内存限制: 64 MB提交: 9 解决: 2[提交][状态][讨论版] 题目描述 全球气候变暖,小镇A面临水灾,于是你必须买一些泵把水抽走.泵的抽水能力 ...
- Leetcode 417.太平洋大西洋水流问题
太平洋大西洋水流问题 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处于大陆的右边界和下 ...
- Unity Shader 2D水流效果
水流的模拟主要运用了顶点变换和纹理动画的结合: 顶点变换中,利用正弦函数模拟河流的大致形态,例如波长,振幅等. 纹理动画中,将纹理坐标朝某一方向持续滚动以形成流动的效果. 脚本如下: Shader & ...
随机推荐
- 前端js中this指向及改变this指向的方法
js中this指向是一个难点,花了很长时间来整理和学习相关的知识点. 一. this this是JS中的关键字, 它始终指向了一个对象, this是一个指针; 参考博文: JavaScript函数中的 ...
- ifconfig---配置和显示Linux内核中网络接口
ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数.用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在.要想将上述的配置信息永远的存的电脑里,那就要修改网卡 ...
- python +uiautomator 安卓UI控件操作
一.搭建环境 准备:win7.JDK.androidSDK(adt-bundle-windows-x86_64-20140702\sdk).Appium.安卓模拟器(真机也可以),可以到这个地址下载h ...
- VS:"64位调试操作花费的时间比预期要长"的一解决途径
解决的方法之中的一个: 在命令提示符那里打入例如以下命令: netsh winsock reset catalog netsh int ip reset reset.log hit 重新启动电脑后,就 ...
- 使用注解的方式配置Servlet
提到Servlet的配置,大多数人想到的应该都是在web.xml中配置吧.有没有更简洁的方式呢?今天就学到了採用注解的方式配置Servlet. 此方式尽管简便.但当然也存在问题. 採用注解的有点:你能 ...
- WINDOWS 安装 M2Crypto for Python2.7
WINDOWS 安装 M2Crypto for Python2.7运行环境 WIN8.1 + Python2.7 + VS2008(Microsoft Visual C++ 9.0) VS2008 可 ...
- AngularJsDEMO
接触AngularJs时间不长,纯粹是学着好玩而已,因此没有深挖原理,针对理论性的知识,园子里面有很多介绍,我就不多介绍了. 这里写了个简单的DEMO,部署起来就可以直接运行了,里面 大概用了最基础的 ...
- alert警告框
标签中写: <div class="alert alert-warning fade in"> <button class="close" d ...
- Restlet 学习笔记
摘要:网络上对 restlet 的评判褒贬不一,有的说框架封装的很好,很有弹性,有的说 rest 架构风格本身是一种简单的风格,restlet 过设计以使编程过于复杂,其实我倒不觉得 restlet ...
- 前端项目中常用es6知识总结 -- let、const及数据类型延伸
项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2 ...