博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 3234: [Ahoi2013]立方体
阅读量:6892 次
发布时间:2019-06-27

本文共 1458 字,大约阅读时间需要 4 分钟。

题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3234

题意:求长方体交的表面积。

思路:flood-fill

const int N=205;int f[N][N][N];bool visit[N][N][N];int n;int dx[]={1,-1,0,0,0,0};int dy[]={0,0,1,-1,0,0};int dz[]={0,0,0,0,1,-1};queue
> > Q;int main(){ n=getInt(); int i; int maxX=0,maxY=0,maxZ=0; int minX=222,minY=222,minZ=222; for(i=1;i<=n;i++) { int x1=getInt(),y1=getInt(),z1=getInt(); int x2=getInt(),y2=getInt(),z2=getInt(); x1++; y1++; z1++; x2++; y2++; z2++; f[x1][y1][z1]++; f[x1][y1][z2]--; f[x1][y2][z1]--; f[x2][y1][z1]--; f[x2][y2][z1]++; f[x2][y1][z2]++; f[x1][y2][z2]++; f[x2][y2][z2]--; minX=min(minX,x1); minY=min(minY,y1); minZ=min(minZ,z1); maxX=max(maxX,x2+2); maxY=max(maxY,y2+2); maxZ=max(maxZ,z2+2); } int j,k; for(i=minX;i<=maxX;i++) for(j=minY;j<=maxY;j++) for(k=minZ;k<=maxZ;k++) { f[i][j][k]+=f[i-1][j][k]+f[i][j-1][k]+f[i][j][k-1]; f[i][j][k]-=f[i-1][j-1][k]+f[i-1][j][k-1]+f[i][j-1][k-1]; f[i][j][k]+=f[i-1][j-1][k-1]; } Q.push(MP(maxX,MP(maxY,maxZ))); visit[maxX][maxY][maxZ]=1; int ans=0; while(!Q.empty()) { int x=Q.front().first; int y=Q.front().second.first; int z=Q.front().second.second; Q.pop(); for(i=0;i<6;i++) { int xx=x+dx[i]; int yy=y+dy[i]; int zz=z+dz[i]; if(xx>=minX-1&&xx<=maxX&&yy>=minY-1&&yy<=maxY&&zz>=minZ-1&&zz<=maxZ&&!visit[xx][yy][zz]) { if(f[xx][yy][zz]) ans++; else Q.push(MP(xx,MP(yy,zz))),visit[xx][yy][zz]=1; } } } printf("%d\n",ans);}

 

转载地址:http://odhbl.baihongyu.com/

你可能感兴趣的文章
mysqldb安装
查看>>
DOS 的XCOPY命令的应用之排除某些文件或文件夹(/EXCLUDE选项的应用)
查看>>
如何才能带动团队
查看>>
Spring中IOC和AOP的详细解释
查看>>
电机分类
查看>>
IntelliJ Idea 常用快捷键列表
查看>>
一、数组二三
查看>>
Android_触摸设备
查看>>
mysql读书笔记(三)
查看>>
实例:调用系统字体
查看>>
程序员应该重视版本控制
查看>>
提升Salt Api稳定性
查看>>
sqoop架构原理与操作
查看>>
C Primer Plus 第5章 运算符、表达式和语句 5.6 带有参数的函数
查看>>
js 函数节流与函数防抖技巧
查看>>
Netty概述
查看>>
PAT 1010__已过但why二分查找时mid须初始化为low
查看>>
1079 Total Sales of Supply Chain
查看>>
Linux文件和目录管理(1)
查看>>
nginx+tomcat集群+redis(memcache)session共享
查看>>