problem

L3-004 肿瘤诊断 (30分)
在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环。给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积。

输入格式:
输入第一行给出4个正整数:M、N、L、T,其中M和N是每张切片的尺寸(即每张切片是一个M×N的像素矩阵。最大分辨率是1286×128);L(≤60)是切片的张数;T是一个整数阈值(若疑似肿瘤的连通体体积小于T,则该小块忽略不计)。

最后给出L张切片。每张用一个由0和1组成的M×N的矩阵表示,其中1表示疑似肿瘤的像素,0表示正常像素。由于切片厚度可以认为是一个常数,于是我们只要数连通体中1的个数就可以得到体积了。麻烦的是,可能存在多个肿瘤,这时我们只统计那些体积不小于T的。两个像素被认为是“连通的”,如果它们有一个共同的切面,如下图所示,所有6个红色的像素都与蓝色的像素连通。

输出格式:
在一行中输出肿瘤的总体积。

输入样例:
3 4 5 2
1 1 1 1
1 1 1 1
1 1 1 1
0 0 1 1
0 0 1 1
0 0 1 1
1 0 1 1
0 1 0 0
0 0 0 0
1 0 1 1
0 0 0 0
0 0 0 0
0 0 0 1
0 0 0 1
1 0 0 0
输出样例:
26

  • 给出L个N*M的01矩阵(立体),求所有大于T的联通块大小之和。
  • 数据范围1e3*1e2*60

solution

  • 很明显就是一个三维搜索,上下左右前后六个面
  • 但是三维,DFS层数过多会爆栈,大佬手动加栈,我还是BFS把
  • 令a[k][i][j]表示空间第k片(i,j)的位置,爆搜即可。
#include<bits/stdc++.h>
using namespace std;int n, m, l, t, a[61][129][1287];int ans = 0;
struct xyz{int x, y, z;};
int dx[6][3] = {{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
int check(int x, int y, int z){if(x<0||y<0||z<0||x>=l||y>=n||z>=m)return 0;return 1;}
void bfs(int x, int y, int z){queue<xyz>q;  q.push(xyz{x,y,z}); a[x][y][z] = 0;int sum = 1;while(q.size()){xyz k = q.front(); q.pop();for(int i = 0; i < 6; i++){xyz kk = k;//kk!=k,WA3,6,这TM也能过样例?!kk.x += dx[i][0];kk.y += dx[i][1];kk.z += dx[i][2];if(check(kk.x,kk.y,kk.z) && a[kk.x][kk.y][kk.z]){a[kk.x][kk.y][kk.z] = 0;sum++;q.push(kk);}}}if(sum>=t)ans += sum;
}int main(){cin>>n>>m>>l>>t;for(int k = 0; k < l; k++)for(int i = 0; i < n; i++)for(int j = 0; j < m; j++)cin>>a[k][i][j];for(int k = 0; k < l; k++)for(int i = 0; i < n; i++)for(int j = 0; j < m; j++)if(a[k][i][j])bfs(k,i,j);cout<<ans<<endl;return 0;
}

【CCCC】L3-004 肿瘤诊断 (30分),三维BFS相关推荐

  1. 7-58 肿瘤诊断 (30 分)

    7-58 肿瘤诊断 (30 分) 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中 ...

  2. 【CCCC】L3-008 喊山 (30分),BFS搜索最长路,水题

    problem L3-008 喊山 (30分) 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出"喂-喂喂-喂喂喂--"的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中 ...

  3. 【CCCC】L3-019 代码排版 (30分),大模拟

    problem L3-019 代码排版 (30分) 某编程大赛中设计有一个挑战环节,选手可以查看其他选手的代码,发现错误后,提交一组测试数据将对手挑落马下.为了减小被挑战的几率,有些选手会故意将代码写 ...

  4. 【CCCC】L3-022 地铁一日游 (30分),floyd+大模拟

    problem L3-022 地铁一日游 (30分) 森森喜欢坐地铁.这个假期,他终于来到了传说中的地铁之城--魔都,打算好好过一把坐地铁的瘾! 魔都地铁的计价规则是:起步价 2 元,出发站与到达站的 ...

  5. 【CCCC】L3-017 森森快递 (30分),线段树rmq模板+贪心排序

    problem L3-017 森森快递 (30分) 森森开了一家快递公司,叫森森快递.因为公司刚刚开张,所以业务路线很简单,可以认为是一条直线上的N个城市,这些城市从左到右依次从0到(N−1)编号.由 ...

  6. 【CCCC】L3-015 球队“食物链” (30分),搜索排列

    problem L3-015 球队"食物链" (30分) 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结 ...

  7. 【CCCC】L3-014 周游世界 (30分),,DFS搜索最短路,路径打印

    problem L3-014 周游世界 (30分) 周游世界是件浪漫事,但规划旅行路线就不一定了-- 全世界有成千上万条航线.铁路线.大巴线,令人眼花缭乱.所以旅行社会选择部分运输公司组成联盟,每家公 ...

  8. 【CCCC】L3-007 天梯地图 (30分),两次Dijkstra+路径打印(数据点2,4错因),90行最短题解

    problem L3-007 天梯地图 (30分) 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证 ...

  9. 【CCCC】L3-005 垃圾箱分布 (30分),Dijkstra跑n遍 = 多源最短路,emm

    problem L3-005 垃圾箱分布 (30分) 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾箱住.所以垃圾箱的位置必须选在到所有居民点的最短距离最长的地方,同时还要保证每 ...

最新文章

  1. 基于Python的OpenCV轮廓检测聚类
  2. YOLOv5x6模型来了! 同样支持CPU上ONNX部署与推理
  3. Linux启动网卡时出现RTNETLINK answers: File exists错误解决方法
  4. bundle 安装_超级小白使用pip安装第三方库的正确姿势
  5. MySql数据库驱动类
  6. Ext4文件系统修复
  7. [C语言] 插入排序之直接插入排序的特性及实现
  8. 转:Git: 对象原理
  9. 工程经济作业1答案_工程经济学1、2、3、4(作业1答案)
  10. GPS卫星星历与卫星历书的区别
  11. JAVA:实现HillCipher希尔密码算法(附完整源码)
  12. 计算机忘记密码WIN7,win7忘记密码强制重置方法
  13. 【光学设计基础】--01像差理论基础
  14. 计算机技术在材料物理专业的应用,东北大学材料物理专业要学哪些课程,好学吗?...
  15. 电子厂里撂了挑子,我默默自学起了Android|2021年中总结
  16. Typora主题推荐及资源
  17. 艾伟:Memcached深度分析
  18. 无烟锅强制国标年内有望出台
  19. 最新WordPress漏洞,黑客可轻松控制您的网站
  20. 创新与服务紧贴“本土化”,Galaxy S9|S9+不愧为三星诚意之作

热门文章

  1. 多元高斯分布及多元条件高斯分布
  2. C Tricks(八)—— 硬币和骰子的模拟
  3. Matlab Tricks(七)—— 矩阵列/列的归一化/单位化(normalize)
  4. 机器学习基础(二十九)—— 径向基核函数(RBF)
  5. Python 基础—— operator 模块、functools
  6. java bfs dfs_java优先搜索(DFS/BFS)实际应用
  7. python爬百度新闻_13、web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息...
  8. python代码写好了怎么运行-教你如何编写、保存与运行 Python 程序
  9. python和java哪个好-Python和Java对比,全面解读哪个语言最赚钱,前景最好?
  10. python语言能做什么-python语言可以干什么