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

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

思路:flood-fill

  1. const int N=205;
  2.  
  3. int f[N][N][N];
  4. bool visit[N][N][N];
  5. int n;
  6.  
  7. int dx[]={1,-1,0,0,0,0};
  8. int dy[]={0,0,1,-1,0,0};
  9. int dz[]={0,0,0,0,1,-1};
  10.  
  11. queue<pair<int,pair<int,int> > > Q;
  12.  
  13. int main()
  14. {
  15.  
  16. n=getInt();
  17. int i;
  18.  
  19. int maxX=0,maxY=0,maxZ=0;
  20. int minX=222,minY=222,minZ=222;
  21.  
  22. for(i=1;i<=n;i++)
  23. {
  24. int x1=getInt(),y1=getInt(),z1=getInt();
  25. int x2=getInt(),y2=getInt(),z2=getInt();
  26. x1++;
  27. y1++;
  28. z1++;
  29. x2++;
  30. y2++;
  31. z2++;
  32. f[x1][y1][z1]++;
  33. f[x1][y1][z2]--; f[x1][y2][z1]--; f[x2][y1][z1]--;
  34. f[x2][y2][z1]++; f[x2][y1][z2]++; f[x1][y2][z2]++;
  35. f[x2][y2][z2]--;
  36.  
  37. minX=min(minX,x1);
  38. minY=min(minY,y1);
  39. minZ=min(minZ,z1);
  40.  
  41. maxX=max(maxX,x2+2);
  42. maxY=max(maxY,y2+2);
  43. maxZ=max(maxZ,z2+2);
  44. }
  45.  
  46. int j,k;
  47. for(i=minX;i<=maxX;i++) for(j=minY;j<=maxY;j++) for(k=minZ;k<=maxZ;k++)
  48. {
  49. f[i][j][k]+=f[i-1][j][k]+f[i][j-1][k]+f[i][j][k-1];
  50. f[i][j][k]-=f[i-1][j-1][k]+f[i-1][j][k-1]+f[i][j-1][k-1];
  51. f[i][j][k]+=f[i-1][j-1][k-1];
  52. }
  53.  
  54. Q.push(MP(maxX,MP(maxY,maxZ)));
  55. visit[maxX][maxY][maxZ]=1;
  56. int ans=0;
  57. while(!Q.empty())
  58. {
  59. int x=Q.front().first;
  60. int y=Q.front().second.first;
  61. int z=Q.front().second.second;
  62. Q.pop();
  63.  
  64. for(i=0;i<6;i++)
  65. {
  66. int xx=x+dx[i];
  67. int yy=y+dy[i];
  68. int zz=z+dz[i];
  69. if(xx>=minX-1&&xx<=maxX&&yy>=minY-1&&yy<=maxY&&zz>=minZ-1&&zz<=maxZ&&!visit[xx][yy][zz])
  70. {
  71. if(f[xx][yy][zz]) ans++;
  72. else Q.push(MP(xx,MP(yy,zz))),visit[xx][yy][zz]=1;
  73. }
  74. }
  75. }
  76. printf("%d\n",ans);
  77. }

bzoj 3234: [Ahoi2013]立方体的更多相关文章

  1. [AHOI2013]立方体(三维bit)

    [Ahoi2013]立方体 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 130  Solved: 55[Submit][Status] Descrip ...

  2. BZOJ 3233: [Ahoi2013]找硬币

    BZOJ 3233: [Ahoi2013]找硬币 标签(空格分隔): OI-BZOJ OI-DP Time Limit: 10 Sec Memory Limit: 64 MB Description ...

  3. BZOJ 3235: [Ahoi2013]好方的蛇

    BZOJ 3235: [Ahoi2013]好方的蛇 标签(空格分隔): OI-BZOJ OI-DP OI-容斥原理 Time Limit: 10 Sec Memory Limit: 64 MB Des ...

  4. BZOJ 3238: [Ahoi2013]差异 [后缀数组 单调栈]

    3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2326  Solved: 1054[Submit][Status ...

  5. BZOJ 3237: [Ahoi2013]连通图

    3237: [Ahoi2013]连通图 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1161  Solved: 399[Submit][Status ...

  6. BZOJ 3236: [Ahoi2013]作业

    3236: [Ahoi2013]作业 Time Limit: 100 Sec  Memory Limit: 512 MBSubmit: 1393  Solved: 562[Submit][Status ...

  7. Bzoj 3236: [Ahoi2013]作业 莫队,分块

    3236: [Ahoi2013]作业 Time Limit: 100 Sec  Memory Limit: 512 MBSubmit: 1113  Solved: 428[Submit][Status ...

  8. [BZOJ 3236] [Ahoi2013] 作业 && [BZOJ 3809] 【莫队(+分块)】

    题目链接: BZOJ - 3236   BZOJ - 3809 算法一:莫队 首先,单纯的莫队算法是很好想的,就是用普通的第一关键字为 l 所在块,第二关键字为 r 的莫队. 这样每次端点移动添加或删 ...

  9. bzoj 3225: [Sdoi2008] 立方体覆盖 题解

    [原题] 3225: [Sdoi2008]立方体覆盖 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 51  Solved: 36 [Submit][S ...

随机推荐

  1. -XX:+PrintHeapAtGC 每次一次GC后,都打印堆信息

    -XX:+PrintHeapAtGC每次一次GC后,都打印堆信息 {Heap before GC invocations=0 (full 0): def new generation   total ...

  2. 夺命雷公狗jquery---1选择元素的3种方法

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. VC6.0 error LNK2001: unresolved external symbol _main(转)

    学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过.产生连接错误的原因非常多,尤其LNK2001错误 ...

  4. ubuntu修改文件权限记录

    查看文件权限的命令: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有10位数 其中: 最前面那个 - 代表 ...

  5. SEO之链接农场、内容农场、微信内容农场

    SEO之链接农场.内容农场.微信内容农场 一.“内容农场”的上市之路http://www.neweekly.com.cn/newsview.php?id=3330里斯2006年的第二次创业仍旧延续了上 ...

  6. HTML5与移动端Web

    概述 HTML5 提供了很多新的功能,主要有: 新的 HTML 元素,例如 section, nav, header, footer, article 等 用于绘画的 Canvas 元素 用于多媒体播 ...

  7. android 中activity调用远程service中的方法之 aidl的使用

    服务端:只有服务,没有界面 1.编写interface文件,复制到 .aidl 文件中,并去掉其中的public 等修饰符.系统会自动在gen目录下生成对应的java文件  (对应本地调用中的接口文件 ...

  8. In_interrupt( ) 和In_irq( )【转】

    转自:http://blog.csdn.net/do2jiang/article/details/5486888 in_interrupt() 是判断当前进程是否处于中断上下文,这个中断上下文包括底半 ...

  9. 表数据文件DBF的读取和写入操作

    import sys import csv import struct import datetime import decimal import itertools from cStringIO i ...

  10. oracle 定时备份

    第一步.bat脚本: @echo off echo 删除10天前的备分文件和日志 forfiles /p "z:/back" /m *.dmp /d -10 /c "cm ...