bzoj3234: [Ahoi2013]立方体 括号法
来源:互联网 发布:淘宝西铁城手表真假 编辑:程序博客网 时间:2024/05/21 00:45
看到题目首先想到200^4的乱搞。竟然有70分。。。。
正解是神奇的括号法,对8个角进行处理,然后求一下前缀和。
再从一个没被包住的点开始访问,如果访问到一个点的f值是正数,说明这是一个面。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;int f[210][210][210];bool vis[210][210][210];int n;struct node{ int x,y,z;};int dx[]={1,-1,0,0,0,0};int dy[]={0,0,1,-1,0,0};int dz[]={0,0,0,0,1,-1};int maxx,maxy,maxz,ans;int minx=222,miny=222,minz=222;bool judge(int x,int y,int z){ if(x>=minx-1&&x<=maxx&&y>=miny-1&&y<=maxy&&z>=minz-1&&z<=maxz) return true; return false;}void bfs(int x,int y,int z){ node now,next; int xx,yy,zz; now.x=x; now.y=y; now.z=z; vis[x][y][z]=1; queue<node>q; q.push(now); while(!q.empty()) { now=q.front(); q.pop(); for(int i=0;i<6;i++) { xx=now.x+dx[i]; yy=now.y+dy[i]; zz=now.z+dz[i]; if(!judge(xx,yy,zz)) continue; if(vis[xx][yy][zz]) continue; if(f[xx][yy][zz]) ans++; else { vis[xx][yy][zz]=1; next.x=xx; next.y=yy; next.z=zz; q.push(next); } } }}int main(){ scanf("%d",&n); int x1,x2,y1,y2,z1,z2; for(int i=1;i<=n;i++) { scanf("%d%d%d%d%d%d",&x1,&y1,&z1,&x2,&y2,&z2); 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(maxz,y2+2); maxz=max(maxz,z2+2); } for(int i=minx;i<=maxx;i++) { for(int j=miny;j<=maxy;j++) { for(int 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-1][j-1][k-1]; f[i][j][k]-=f[i-1][j-1][k]+f[i][j-1][k-1]+f[i-1][j][k-1]; } } } bfs(minx,miny,minz); printf("%d\n",ans); return 0;}
0 0
- bzoj3234: [Ahoi2013]立方体 括号法
- 立方体
- [Ahoi2013]差异
- [AHOI2013]作业
- [Ahoi2013]差异 bzoj3238
- bzoj 3236: [Ahoi2013]作业
- 【BZOJ 3238】 [Ahoi2013]差异
- 【BZOJ 3236】 [Ahoi2013]作业
- 【AHOI2013】【BZOJ3238】差异
- [BZOJ3238][Ahoi2013]差异
- bzoj 3238: [Ahoi2013]差异
- 3236: [Ahoi2013]作业
- 【AHOI2013】【BZOJ3237】连通图
- BZOJ3237: [Ahoi2013]连通图
- [Ahoi2013]作业 解题报告
- [BZOJ3238][Ahoi2013]差异
- 3238: [Ahoi2013]差异
- bzoj3238: [Ahoi2013]差异
- eclipse maven web项目与web项目的区别
- 设计模式(十六)之Command
- java IO相关API探索之 AutoCloseable接口
- jsp自定义分页标签
- android:textAppearance 用处
- bzoj3234: [Ahoi2013]立方体 括号法
- Silverlight和浏览器交互介绍----Silverlight中使用托管代码调用JavaScript
- Bootstrap按钮
- [C++]const Box * p || Box const * p || Box * const p的区别
- Mac OS X下进行网络抓包
- Silverlight和浏览器交互介绍-------JavaScript调用托管代码
- C调用python,如何调用pymongo模块
- GridControl详解(一)原汁原味的表格展示
- ScrollView中嵌套两个ListView