终于把省选时的遗憾补上了…
对于构造立方体:
首先BFS构出底层,然后再逐层构造立方体
对于计算:
$O(n^6)$爆搜即可。
#include#include 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 sum)ansl=sum;if(ansr ='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