1091 Acute Stroke

2023-10-29 08:20
文章标签 stroke 1091 acute

本文主要是介绍1091 Acute Stroke,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目大意

给出一个L层的切片,每一块切片是一个大小为M * N 的二维矩阵,其中为1的位置就是病变的位置,将这L层切片上下堆叠起来就形成了一个立体映像,二维状态的病变位置也就组成了立体的肿瘤。现在让你计算肿瘤的体积(也就是1的个数)。但是,体积不超过T的肿瘤不计数。有邻边的和满足如图所示的这种六块红色病变位置均可组成一个肿瘤。

思路解析

一道十分考察耐心的题,应用的思想是三维的BFS,用DFS会导致栈溢出。
首先要建立坐标系,我建立的坐标系如图所示:

在这里插入图片描述

创建一个三维的visited数组,每次按前后左右上下的顺序广度遍历,当队列为空时,说明遍历完了一个极大联通子图,判断体积是否符合要求,直到把所有的点都遍历完成。


示例代码

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
struct node {
public:int x, y, z;
};
int m, n, l, t, temp, sum = 0;
vector<vector<vector<int>>> vec;
bool visited[70][130][1300];
int X[6] = { 0,0,-1,1,0,0 };//前后左右上下
int Y[6] = { -1,1,0,0,0,0 };
int Z[6] = { 0,0,0,0,-1,1 };
bool islegal(int z, int y, int x) {if (x < 0 || x >= n || y < 0 || y >= m || z < 0 || z >= l) return false;if (vec[z][y][x] == 0 || visited[z][y][x] == true) return false;return true;
}
int bfs(int z, int y, int x) {node nod;int num = 0;queue<node> que;visited[z][y][x] = true;nod.x = x, nod.y = y, nod.z = z;que.push(nod);while (!que.empty()) {node top = que.front();num++;x = top.x, y = top.y, z = top.z;que.pop();for (int i = 0; i < 6; i++) {int xp = x + X[i];int yp = y + Y[i];int zp = z + Z[i];if (islegal(zp, yp, xp)) {node n2;n2.x = xp, n2.y = yp, n2.z = zp;que.push(n2);visited[zp][yp][xp] = true;}}}return num;
}
int main() {scanf("%d %d %d %d", &m, &n, &l, &t);vec.resize(l);for (int z = 0; z < l; z++) {vec[z].resize(m);for (int y = 0; y < m; y++) {for (int x = 0; x < n; x++) {scanf("%d", &temp);vec[z][y].push_back(temp);}}}for (int z = 0; z < l; z++) {for (int y = 0; y < m; y++) {for (int x = 0; x < n; x++) {if (vec[z][y][x] == 1 && !visited[z][y][x]) {int unit = bfs(z, y, x);if (unit >= t) {sum += unit;}}}}}cout << sum;return 0;
}

这篇关于1091 Acute Stroke的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299430

相关文章

poj 1091 跳蚤(不定方程+容斥)

跳蚤 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 8731 Accepted: 2605 Description Z城市居住着很多只跳蚤。在Z城市周六生活频道有一个娱乐节目。一只跳蚤将被请上一个高空钢丝的正中央。钢丝很长,可以看作是无限长。节目主持人会给该跳蚤发一张卡片。卡片上写有N+1个自然数。其中最

【ZZULIOJ】1091: 童年生活二三事(多实例测试)(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去。 但年幼的他一次只能走上一阶或者一下子蹦上两阶。 现在一共有N阶台阶,请你计算一下Redraiment从第0阶到第N阶共有几种走法。 输入 输入包括多组数据。 每组数据包括一行:N(1≤N≤40)。 输入以0结束

text-stroke详解

text-stroke详解 属性定义及使用说明 text-stroke 属性是用来为文本添加描边效果的CSS属性,但请注意,它并非标准CSS属性,而是WebKit(如Safari和Chrome)浏览器专有的CSS扩展属性。为了兼容其他浏览器,通常会配合 -webkit-text-stroke 和 -moz-text-stroke 等私有前缀属性一起使用。 语法 -webkit-text-s

1091:求阶乘的和--信息学一本通(c++)

NOIP信息学奥赛资料下载 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 13098 通过数: 10121 【题目描述】 给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+…+n!),输出阶乘的和。 【输入】 输入有一行,包含一个正整数n(1 < n < 12)。 【输出】 输出有一行:阶乘的和。 【输入样例】 5 【输出样例】 153 【来源】 NO

1091 Acute Stroke (30 分) 三维广搜bfs

One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the results of image analysis in which the core regions are identified in each MRI slice, your job is to c

OJ : 1091 : 童年生活二三事(多实例测试)

输入 输入包括多组数据。  每组数据包括一行:N(1≤N≤40)。  输入以0结束 输出 对应每个输入包括一个输出。  为redraiment到达第n阶不同走法的数量。 样例输入  130 样例输出  13 思路:          对于这个问题,我们要求解到达第n阶台阶的不同走法数量。因此,我们可以考虑从前面的台阶开始逐步推导到达第n阶的走法数量。我们可以定义一个数组

POJ 1091 跳蚤(分解质因数 + 容斥 + 大数)

跳蚤 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 8910 Accepted: 2676 Description Z城市居住着很多只跳蚤。在Z城市周六生活频道有一个娱乐节目。一只跳蚤将被请上一个高空钢丝的正中央。钢丝很长,可以看作是无限长。节目主持人会给该跳蚤发一张卡片。卡片上写有N+1个自然数。

粗读Paint Transformer: Feed Forward Neural Painting with Stroke Prediction

作者本人在知乎写了更详细的文章,本博客只是提炼要点并作为个人笔记,想了解更详细的内容还是要看论文和作者的博客:[ICCV 2021 Oral] Paint Transformer - 基于笔触预测的快速油画渲染算法         本文思路是模拟笔画,从粗的笔画不断变细,达到绘制一副油画的效果。这种方法既可以保证生成图像与原图像相似,但同时保留油画的特点和质感。之前,网易实验室已

UVa 439/HDU 1372/POJ 2243/ZOJ 1091 Knight Moves(BFS纯数学方法)

439 - Knight Moves Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=105&page=show_problem&problem=380 http://acm.hdu.edu.cn/showproblem.php?p

SwiftUI中stroke属性的使用

在 SwiftUI 中,可以使用 stroke 属性来绘制形状的轮廓线。stroke 属性接受一个 Color 类型的参数,指定轮廓线的颜色。 以下是一个示例代码,演示如何在 SwiftUI 中使用 stroke 属性绘制矩形的轮廓线: import SwiftUIstruct ContentView: View {var body: some View {Rectangle().stroke