CCCC-GPLT l3-004. 肿瘤诊断 搜索
2018-03-29 19:05
190 查看
在三维01立方体中搜索连通块,将不小于t的连通块计入总数,输出总数.
简单的搜索题.
非常需要注意的是x,y,z的顺序!
读入数据是按z,x,y给的,如果代码中全部写x,y,z其实也无所谓,只要保存值与最大值一致就行,千万不要一会xyz一会zxy.
由上边引申的一个问题:数组大小,三个维度是不一样的.
使用了emplace,可以提升一些效率,但是需要写一个构造函数.
关于编写代码的方式:
相同运行效率的情况下,最重要的应该是编码效率和可读性(方便调试),而不是秀操作,警示自己.
简单的搜索题.
非常需要注意的是x,y,z的顺序!
读入数据是按z,x,y给的,如果代码中全部写x,y,z其实也无所谓,只要保存值与最大值一致就行,千万不要一会xyz一会zxy.
由上边引申的一个问题:数组大小,三个维度是不一样的.
使用了emplace,可以提升一些效率,但是需要写一个构造函数.
关于编写代码的方式:
相同运行效率的情况下,最重要的应该是编码效率和可读性(方便调试),而不是秀操作,警示自己.
/* LittleFall : Hello! */ #include <bits/stdc++.h> #define ll long long using namespace std; inline int read(); inline void write(int x); int save[65][1300][130]; const int go[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}}; struct Point { int z, x, y; Point(int z, int x, int y): z(z), x(x), y(y) {} }; int main(void) { #ifdef _LITTLEFALL_ freopen("in.txt", "r", stdin); #endif //std::cin.sync_with_stdio(false); int n = read(), m = read(), l = read(), t = read(), ans = 0; for(int i=1;i<=l;++i)for(int j=1;j<=n;++j)for(int k=1;k<=m;++k) save[i][j][k] = read(); queue<Point> q; for(int i=1;i<=l;++i)for(int j=1;j<=n;++j)for(int k=1;k<=m;++k) { if(save[i][j][k]) { while(!q.empty()) q.pop(); int tmp = 1; save[i][j][k] = 0; q.emplace(i, j, k); while(!q.empty()) { Point zxy = q.front(); q.pop(); int z = zxy.z, x = zxy.x, y = zxy.y; for(int dir=0;dir<6;++dir) { int nz=z+go[dir][0],nx=x+go[dir][1],ny=y+go[dir][2]; if(nz>=1&&nz<=l&&nx>=1&&nx<=n&&ny>=1&&ny<=m&&save[nz][nx][ny]) { tmp++; save[nz][nx][ny]=0; q.emplace(nz,nx,ny); } } } if(tmp >= t) ans += tmp; } } printf("%d\n",ans ); return 0; } inline int read() { int x = 0, f = 1; char ch = getchar(); while(ch < '0' || ch > '9') { if(ch == '-')f = -1; ch = getchar(); } while(ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); } return x * f; } inline void write(int x) { if(x < 0) putchar('-'), x = -x; if(x > 9) write(x / 10); putchar(x % 10 + '0'); }
相关文章推荐
- GPLT L3-004. 肿瘤诊断【三维bfs求连通块】
- PAT天梯赛练习题——L3-004. 肿瘤诊断(三维连通块并查集)
- 天梯赛 L3-004. 肿瘤诊断(BFS)
- 团体程序设计天梯赛-练习集-L3-004. 肿瘤诊断(三维bfs)
- 团体程序设计天梯赛L3-004 肿瘤诊断
- L3-004. 肿瘤诊断
- PAT L3-004. 肿瘤诊断 (BFS)
- L3-004. 肿瘤诊断 天梯赛模拟题
- L3-004. 肿瘤诊断
- 天梯赛-L3-004. 肿瘤诊断(三维空间+广搜)
- L3-004. 肿瘤诊断
- pat 甲级 团体天梯 L3-004. 肿瘤诊断
- 肿瘤诊断 L3-004
- L3-004. 肿瘤诊断
- 团体程序设计天梯赛-L3-004. 肿瘤诊断
- 肿瘤诊断 L3-004
- 肿瘤诊断 L3-004
- 肿瘤诊断 L3-004
- C4top-肿瘤诊断(BFS-三维搜索)
- 肿瘤诊断 L3-004