当前位置: 首页 > news >正文

1091 Acute Stroke (三维搜索)

题目可能看起来很难的样子,但是看懂了其实挺简单的。(众所周知,pat考察英文水平)

题目意思大概是:给你一个L*M*N的01长方体,求全为1的连通块的总体积大小。(连通块体积大于T才计算在内)

思路:直接搜索每个为1的点,计算连通块大小即可。

#include<bits/stdc++.h>
using namespace std;
int n,m,l,t;
int mp[70][1300][130];
bool vis[70][1300][130];
struct node{int z,x,y;
};
bool check(int x,int y,int z){return x>=0&&x<n&&y>=0&&y<m&&z>=0&&z<l;
}
int bfs(int i,int j,int k){queue<node>q;q.push({i,j,k});int dx[6]={0,0,1,-1,0,0};int dy[6]={1,-1,0,0,0,0};int dz[6]={0,0,0,0,1,-1};int res=0;while(q.size()){node f=q.front();q.pop();if(vis[f.z][f.x][f.y])continue;res++;vis[f.z][f.x][f.y]=1;for(int i=0;i<6;i++){int xx=f.x+dx[i];int yy=f.y+dy[i];int zz=f.z+dz[i];if(check(xx,yy,zz)&&mp[zz][xx][yy]&&!vis[zz][xx][yy]){q.push({zz,xx,yy});}}}return res;
}
int main(){cin>>n>>m>>l>>t;for(int i=0;i<l;i++){for(int j=0;j<n;j++)for(int k=0;k<m;k++)cin>>mp[i][j][k];}int ans=0;for(int i=0;i<l;i++){for(int j=0;j<n;j++)for(int k=0;k<m;k++){if(!vis[i][j][k]&&mp[i][j][k]){int res=bfs(i,j,k);if(res>=t)ans+=res;}}}cout<<ans;
}

http://www.lryc.cn/news/248542.html

相关文章:

  • java elasticsearch 桶聚合(bucket)
  • 【人生苦短,我学 Python】(4)Python 常用内置数据类型 II —— 序列数据类型(str、tuple、list、bytes和bytearray)
  • Android 9.0 系统默认显示电量百分比
  • 原神:夏洛蒂是否值得培养?全队瞬抬治疗量不输五星,但缺点也很明显
  • Sublime text 添加到鼠标右键菜单,脚本实现
  • 【算法】离散化 与 哈希 之间的区别
  • Android : GPS定位 获取当前位置—简单应用
  • 目标检测——R-CNN算法解读
  • 基于傅里叶变换的运动模糊图像恢复算法matlab仿真
  • 使用mock.js模拟数据
  • Android Handler同步屏障:深入解析
  • HT for Web (Hightopo) 使用心得(5)- 动画的实现
  • Leetcode(面试题 08.01.)三步问题
  • AIGC: 关于ChatGPT中输出表格/表情/图片/图表这些非文本的方式
  • 聊聊logback的addtivity属性
  • 在网络安全护网中,溯源是什么?
  • 【刷题】动态规划
  • hadoop操作
  • 角色管理--高级产品经理岗
  • nginx: [alert] could not open error log file
  • MySQL数据库:外键、唯一键、唯一索引
  • CSS核心功能手册:从熟悉到精通
  • 编程的重要性及解决技术难题的方法
  • 如何成为一名高效的前端开发者(10X开发者)
  • Docker port 命令
  • PostgreSQL-SQL联表查询LEFT JOIN 数据去重复
  • Golang与MongoDB的完美组合
  • 初识Java 18-2 泛型
  • vue分环境打包及案例代码
  • 基于springboot+vue的在线考试系统(前后端分离)