BZOJ3619 : [Zjoi2014]璀灿光华
终于把省选时的遗憾补上了…
对于构造立方体:
首先BFS构出底层,然后再逐层构造立方体
对于计算:
$O(n^6)$爆搜即可。
#include<cstdio>
#include<cstring>
const int N=75,M=343010;
char ch[N];
int n,m,i,j,k,tmp,q[M],t,l,r;
int cnt[M],side[M][6],g[M],loc[M][3],a[N][N][N],ap[N][N][N],ansl=~0U>>1,ansr,sum;
int dx[6]={1,-1,0,0,0,0},dy[6]={0,0,1,-1,0,0},dz[6]={0,0,0,0,1,-1};
bool vis[M];
inline void add(int x,int y,int z,int id){vis[q[++t]=a[x][y][z]=id]=1;loc[t][0]=x,loc[t][1]=y,loc[t][2]=z;}
inline int getup(int x){for(int i=0;i<cnt[x];i++)if(!vis[side[x][i]])return side[x][i];}
inline int getside(int x){for(int i=0;i<cnt[x];i++)if(!vis[side[x][i]]&&cnt[side[x][i]]<5)return side[x][i];}
inline int getcommon(int x,int y){for(int i=0;i<cnt[x];i++)if(!vis[side[x][i]])for(int j=0;j<cnt[y];j++)if(side[x][i]==side[y][j])return side[x][i];}
void dfs(int u,int d){
int x,y,z,i;
for(x=loc[u][0],y=loc[u][1],z=loc[u][2];x&&y&&z&&x<=n&&y<=n&&z<=n;x+=dx[d],y+=dy[d],z+=dz[d])if(!(ap[x][y][z]++))sum+=a[x][y][z];
if(u==t){if(ansl>sum)ansl=sum;if(ansr<sum)ansr=sum;}else for(i=0;i<6;i++)dfs(u+1,i);
for(x=loc[u][0],y=loc[u][1],z=loc[u][2];x&&y&&z&&x<=n&&y<=n&&z<=n;x+=dx[d],y+=dy[d],z+=dz[d])if(!(--ap[x][y][z]))sum-=a[x][y][z];
}
int main(){
scanf("%d",&n);m=n*n*n;
for(i=1;i<=m;i++){
scanf("%d",&g[i]),gets(ch+1),l=1,r=std::strlen(ch+1);
while(ch[l]==' ')l++;
while(ch[r]==' ')r--;ch[++r]=' ';
for(j=l;j<=r;j++)if(ch[j]>='0'&&ch[j]<='9')(side[i][cnt[i]]*=10)+=ch[j]-'0';else cnt[i]++;
if(cnt[i]==3)tmp=i;
}
add(1,1,1,tmp),add(2,1,1,side[tmp][0]),add(1,2,1,side[tmp][1]);
for(l=2,r=3;l<r;l=r+1,r=t){
if(loc[l][0]<n)add(loc[l][0]+1,1,1,getside(q[l]));
for(i=l;i<r;i++)add(loc[i][0],loc[i][1]+1,1,getcommon(q[i],q[i+1]));
if(loc[r][1]<n)add(1,loc[r][1]+1,1,getside(q[r]));
}
for(k=1;k<n;k++)for(i=1;i<=n;i++)for(j=1;j<=n;j++)add(i,j,k+1,getup(a[i][j][k]));
for(t=0,k=1;k<=n;k++)for(i=1;i<=n;i++)for(j=1;j<=n;j++){
a[i][j][k]=g[a[i][j][k]];
if(!a[i][j][k])loc[++t][0]=i,loc[t][1]=j,loc[t][2]=k;
}
for(i=0;i<6;i++)dfs(1,i);
return printf("%d %d",ansl,ansr),0;
}
BZOJ3619 : [Zjoi2014]璀灿光华的更多相关文章
- BZOJ3619 [Zjoi2014]璀灿光华 构造+dfs
题意:有一个\(a^3\)个小正方体组成的大正方体,其中有n个正方体会向上下左右前后六个方向中的一个发出光,正方体是透光的,被照亮的正方体有个美丽值\(g_{i}\),给出正方体的相邻关系,问美丽值之 ...
- 题解:[ZJOI2014]璀灿光华
原题链接 OJ 题号 洛谷 3342 loj 2203 bzoj 3619 题目描述 金先生有一个女朋友没名字.她勤劳勇敢.智慧善良.金先生很喜欢她.为此,金先生用\(a^3\)块\(1 \times ...
- 「ZJOI2014」璀灿光华
「ZJOI2014」璀灿光华 实际上,可以不用建水晶立方体... 因为,发光水晶的方向都要枚举一遍. 只需知道发光水晶每个方向有哪些水晶就可以了. 对于一个发光水晶,将它连接的水晶标号. 从该水晶bf ...
- ZJOI2017 Day1
私のZJOI Day1 2017-3-21 07:52:53 有人在暴力膜 苟-- 富贵 无相忘 ZJOI2017交流群 133135071 如果你足够厉害 如果你足够厉害 如果你足够厉害 其实完全可 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- #知识#室内设计原理ing
室内设计原理 第一章 室内设计的含义和基本观点 人的一生,绝大部分时间是在室内度过的,因此,人们设计创造的室内环境,必然会直接关系到室内生活.生产活动的质量,关系到人们的安全.健康.效率.舒适等等.室 ...
- 逐浪web无障碍与国际化以及全民族语言支持白皮书
北京时间2019年5月10日,领先的门户网站与WEB内核服务厂商--上海Zoomla!逐浪CMS团队发布其年度重榜产品:逐浪CMS全民族语言与国际版,体验站点:http://demo2.z01.com ...
- [ZJOI3527][Zjoi2014]力
[ZJOI3527][Zjoi2014]力 试题描述 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi.试求Ei. 输入 包含一个整数n,接下来n行每行输入一个数,第i行表示qi. 输出 有n ...
- bzoj3527: [Zjoi2014]力 fft
bzoj3527: [Zjoi2014]力 fft 链接 bzoj 思路 但是我们求得是 \(\sum\limits _{i<j} \frac{q_i}{(i-j)^2}-\sum_{i> ...
随机推荐
- 内存不能为read修复方法:(转自:网上(忘记了))
指令修复法!开始菜单,运行 ,输入cmd, 回车,在命令提示符下输入(复制即可) : for %1 in (%windir%\system32\*.ocx) do regsvr32.exe /s %1 ...
- FastJSON 简介及其Map/JSON/String 互转
在日志解析,前后端数据传输交互中,经常会遇到 String 与 map.json.xml 等格式相互转换与解析的场景,其中 json 基本成为了跨语言.跨前后端的事实上的标准数据交互格式.应该来说各个 ...
- Watering the Fields(irrigation)
#include <cstdio> #include <algorithm> struct edge{ int f,t,w; } ed[5000000]; int pl,n,c ...
- mysql中limit与in不能同时使用的解决方式.
mysql中limit与in不能同时使用的解决方式. 分类: MySQL2011-10-31 13:53 1277人阅读 评论(0) 收藏 举报 mysqlsubquery MySQL5.1中子查询是 ...
- VirtualBox共享文件夹等高级特性
转自: http://blog.csdn.net/longerzone/article/details/32119457 http://www.oschina.net/translate/10-vir ...
- MVC数据验证
深入浅出 MVC 数据验证 2.0 [附演示源码] 今天在这里给大家介绍一下MVC的数据验证框架. 在1.0版中,很多朋友提出了怎么使用客户端验证,今天找了一些资料,发现了客户端验证的方法. 1.MV ...
- 在SharePoint 2010 母版页里添加自定义用户控件
在SharePoint 2010 母版页里添加自定义用户控件(译) 使用自定义用户控件的好处: 1.容易部署:2.易于控制显示或隐藏. (在使用的过程中)可能要面对的问题是:如何在用户控件里使用Sha ...
- Apple Swift中英文开发资源集锦[apple swift resources]
找到的一些Apple Swift中英文资源原文链接,希望对大家有所帮助.欢迎大家补充,原始资源链接最好! The Swift Programming Language https://develope ...
- iOS 中通过使用Google API获得Google服务
最近使用了google drive这个云存储,官方指导网址为 https://developers.google.com/drive/ios/ . 官方库代码网址为 http://code.googl ...
- php的socket通信(一)
什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域 ...