1091 Acute Stroke (三维搜索)

news/2024/7/17 3:12:03

题目可能看起来很难的样子,但是看懂了其实挺简单的。(众所周知,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;
}


https://www.xjx100.cn/news/3118992.html

相关文章

unity学习笔记12

一、物理系统 如何让一个球体受到重力的影响&#xff1f; 只要给物体添加刚体组件&#xff08;Rigidbody&#xff09;&#xff0c;就可以使其受到重力影响 1.刚体&#xff08;Rigidbody&#xff09;&#xff1a; 刚体是一个组件&#xff0c;用于使游戏对象受到物理引擎的控制。…

fasterxml 注解组装实体

使用 FasterXML Jackson 的注解 JsonTypeInfo 和 JsonSubTypes 可以实现多态类型的处理。在你的 User 类上&#xff0c;你可以添加这些注解来指示 Jackson 如何处理多态类型。 以下是使用 JsonTypeInfo 和 JsonSubTypes 注解的 User 类的修改&#xff1a; import com.fasterx…

小航助学题库蓝桥杯题库c++选拔赛(22年3月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;

nacos配置变更导致logback日志异常

问题背景: 线上的服务突然内存爆满&#xff0c;查服务器突然发现&#xff0c;日志全部打印到了/tmp/tomcat.xxx.port目录下&#xff0c;后来对应操作时间&#xff0c;和nacos修改配置是同一时间发生的&#xff0c;但是疑惑的点是&#xff0c;nacos配置变更为什么会引起logback的…

LeetCode:2336. 无限集中的最小数字(hash模拟 C++)

目录 2336. 无限集中的最小数字 题目描述&#xff1a; 实现代码与解析&#xff1a; set 原理思路&#xff1a; 优先级队列 2336. 无限集中的最小数字 题目描述&#xff1a; 现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...] 。 实现 SmallestInfiniteSet 类&#xf…

用python求出1-100的和(6种方式)

求1到100数字的合计 #方法一 sum20 for i in range(1,101):sum2i print("---sum1---") print(sum2)#方法二 def fsum(n):s0for i in range(1,n1):siprint(s) print("----sum2----") fsum(100)#方法三while循环实现 def fsum1(n):i0 #初始化变量s0while i …

RK3568平台开发系列讲解(Linux系统篇)通过OF函数获取设备树节点实验

** 🚀返回专栏总目录 文章目录 一、获取获取设备树节点二、驱动程序沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过OF函数获取设备树节点实验 一、获取获取设备树节点 在 Linux 内核源码中提供了一系列的 of 操作函数来帮助我们获取到设备树中编写的…

BeanUtil.copyProperties的优化与使用(解决copyProperties null值覆盖问题)

BeanUtil.copyProperties的优化与使用 前言一、copyProperties是什么&#xff1f;二、使用步骤1.引入库2.基础使用3.进阶使用4.实用场景 总结 前言 BeanUtil.copyProperties的优化与使用 一、copyProperties是什么&#xff1f; 在java中&#xff0c;我们想要将一个类的值赋值…