CODE[VS] 3411 洪水
小浣熊松松和朋友到野外露营,没想到遇上了π年一次的大洪水,好在松松是一只爱观察的小浣熊,他发现露营地的地形和洪水有如下性质:
①露营地可以被看做是一个N*M的矩形方阵,其中左上角坐标为(1,1),右下角坐标为(n,m),每个格子(i,j)都有一个高度h(i,j)。
②洪水送(r,c)开始,如果一个格子被洪水淹没,那这个格子四周比它低(或相同)的格子也会被淹没。
现在松松想请你帮忙算算,有多少个格子不会被淹没,便于他和朋友逃脱。
【原有误数据已删除】
第一行包含两个整数n,m,表示矩形方阵右下角坐标。
以下n行,每行m个数,第i行第j个数表示格子(i,j)的高度。
最后一行包含两个整数r,c,表示最初被洪水淹没的格子。
输出仅一行,为永远不会被淹没的格子的数量。
3 3
1 2 3
2 3 4
3 4 5
2 2
5
对于90%的数据,保证随机生成。
对于100%的数据,1<=N,M<=1000。
标签是bfs,
我只会用dfs。
下面是dfs爆搜。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std;int n,m,h[1002][1002],a,b,ans=1; int xx[5]={-1,1,0,0},yy[5]={0,0,1,-1}; bool w[1002][1002],vis[1002][1002];void dfs(int x,int y) {vis[x][y]=1;for(int i=0;i<4;++i){int dx=x+xx[i],dy=y+yy[i];if(dx<1||dx>n||dy<1||dy>m||w[dx][dy]==1||vis[dx][dy]==1) continue;if(h[dx][dy]<=h[x][y]){w[dx][dy]=1;ans++;}}for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)if(w[i][j]==1&&!vis[i][j]) dfs(i,j); }int main() {scanf("%d%d",&n,&m);for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)scanf("%d",&h[i][j]);scanf("%d%d",&a,&b);w[a][b]=1;dfs(a,b);printf("%d",n*m-ans); }
DFS75
这个也是dfs,还是很慢,不过能过这道题,
对比一下思路吧。
#include<cstdio> #include<iostream> using namespace std;int next[4][2]= {{0,1},{0,-1},{1,0},{-1,0}}; int mp[1000][1000]; int a[1000][1000]; int n,m,sum=0;void dfs(int x,int y) {sum++;int t;t=mp[x][y];int i,j;for(i=0; i<4; i++){int xx=x+next[i][0];int yy=y+next[i][1];if(xx<1||yy<1||xx>n||yy>m)continue ;if(mp[xx][yy]<=t&&a[xx][yy]==0){a[xx][yy]=1;dfs(xx,yy);}} }int main() {int i,j;cin>>n>>m;for(i=1; i<=n; i++)for(j=1; j<=m; j++)cin>>mp[i][j];int x;int y;cin>>x>>y;a[x][y]=1;dfs(x,y);cout<<n*m-sum<<endl;return 0; }
dfs AC
有人说这是个bfs的板子。
hh,反正我不会。
狗子zxl又在外面发火了。。。
另附一份bfsAC代码。
自行理解。
#include<iostream> #include<queue> using namespace std;struct point {int x,y; };int dir[4][2]= {{-1,0},{1,0},{0,-1},{0,1}}; int lock[1001][1001] = {0}; int a[1001][1001]; int n, m, sum=0;void BFS(int x, int y) {queue <point> q;point now, next;now.x = x, now.y = y;q.push(now);lock[now.x][now.y] = -1;while(!q.empty()){now = q.front();for(int i=0; i<4; i++){next.x = now.x + dir[i][0];next.y = now.y + dir[i][1];if(next.x<=0||next.y<=0||next.x>n||next.y>m) //判断是否越界continue;if((a[next.x][next.y]<=a[now.x][now.y])&&lock[next.x][next.y]!=-1)//如果洪水可以淹没,且点没有访问过 {q.push(next); //该点入栈lock[next.x][next.y] = -1;}}q.pop();sum++;} }int main() {int p1, p2;cin>>n>>m;for(int i=1; i<=n; i++){for(int j=1; j<=m; j++)cin>>a[i][j];}cin>>p1>>p2;BFS(p1,p2);cout<<n*m-sum<<endl;return 0; }
bfs
转载于:https://www.cnblogs.com/Mary-Sue/p/9163418.html
CODE[VS] 3411 洪水相关推荐
- pku 3411 Paid Roads DFS+灵活技巧卡节点访问次数
http://poj.org/problem?id=3411 题意: 给出 n 个节点 m 条边,求从 1 到 n 的最小花费.有两种支付方式: 1> 预先在城市 Ci (必须先到过该城市)支付 ...
- poj 3411 1724
题目:http://poj.org/problem?id=3411 题意:n 个城市,m 条路,每条路都有两种情况的费用,一种是 在 b 城市付费 r,一种是提前在 c 城市付费 p 元,问从 1 到 ...
- 【To Understand】程序员面试金典——番外篇之洪水
程序员面试金典--番外篇之洪水 参考网址:https://www.nowcoder.com/profile/1917743/codeBookDetail?submissionId=12679910 S ...
- 洪水填充算法_区域填充算法和多边形填充的扫描线算法
本文主要介绍几种区域填充算法,重点解释多边形的扫描线填充算法,最后实现了多边形填充算法,包括在附录文件中.在参考[5]中,作者详细介绍了一系列区域填充算法,可以查看相应网页.代码的下载地址为:http ...
- 示例填充图片_用示例解释洪水填充算法
示例填充图片 什么是洪水填充? (What is Flood Fill?) Flood fill is an algorithm mainly used to determine a bounded ...
- DM error code 达梦数据库-错误代码 汇总
CODE ERRINFO 100 空结果集 101 字符串截断 102 在集函数中计算NULL值 103 无效的表名 104 删除0行记录 105 插入0行记录 106 更新0行记录 107 跨语句游 ...
- Ubuntu使用笔记(Talk is cheap,show me the code.)
目录 VirtualBox共享剪贴板和共享文件夹的实现 1. 从Ubuntu 22.04存储库安装VirtualBox安装扩展 2. 设置虚拟机(ubuntu18.04) 2.1 在虚拟机窗 ...
- ICMP flood(ICMP洪水攻击)
最近在学习DDos相关知识,参考一些知识,做了摘要,供自己参考. 参考:http://blog.csdn.net/xlf13872135090/article/details/8059538 什么是I ...
- 题目地址(1488. 避免洪水泛滥)
题目地址(1488. 避免洪水泛滥) https://leetcode.cn/problems/avoid-flood-in-the-city/ 题目描述 你的国家有无数个湖泊,所有湖泊一开始都是空的 ...
最新文章
- 用html怎么 显示直线,html怎么用鼠标画出一条直线,鼠标移动时候要能看到线条...
- linux虚拟机漏洞修复,linux幽灵漏洞检测和修复方法
- Delphi中比较两个对象是否一致及地址是否相同
- 不自由な放課後 + 正しいメイドの躾かた 汉化补丁
- 从零开始实现ASP.NET Core MVC的插件式开发(一) - 使用Application Part动态加载控制器和视图...
- npoi 所有列调整为一页_别再浪费纸了,一张纸就能打印Word、Excel、PPT所有内容,真厉害...
- java中timer和timertask_使用Java中的Timer和TimerTask
- ASP.NET Core 2.1 源码学习之 Options[3]:IOptionsMonitor 【转】
- DDOS---低轨道离子炮具体使用
- 【硬件】PIC32单片机烧写器以及线序说明
- IT项目管理追踪表格
- 腾讯服务器鉴黄系统,腾讯云智能鉴黄系统
- 符号_网名特殊符号在线制作
- 怎么用计算机弹出soldout,关于sellout和soldout。
- Python seaborn 条形图
- BUG生命周期和管理
- 使用NetBeans进行J2ME开发(五):揭开游戏开发的神秘面纱
- Atracsys FusionTrack 500 光学测量系统
- docker portainer agent 安装
- 50条有趣的Python一行代码
热门文章
- Ubuntu14.04 x64系统设置Qt5.8桌面快捷方式
- [转]Java AIO学习
- ai人工智能收入_人工智能促进收入增长:使用ML推动更有价值的定价
- 网络协议分层及报文格式大全
- 买房应该少出首付,多贷款
- 农行发布年报,日赚5.3亿,人均薪酬23万!
- 老干妈如今做到这么大,为什么她就是没遇到竞敌?
- 朋友圈加粗字体数字_数字+符码:医院数码导视系统畅想起来
- date oracle 显示毫秒_Oracle date timestamp 毫秒 - 时间函数总结
- php-fpm 配置文件位置,php