Description

给一个p*q*r的立方体,它由p*q*r个1*1*1的小立方体构成。每个立方体要么被虫蛀,要么不被。现在郑爽要选出一个a*a*b的立方体(方向任意),使得它没有被虫蛀过,并且4*a*b最大。

Input

第一行是p,q,r <= 150。 以下p*q行,每行r个字符。(x,y,z)这个格子,出现在输入的第1 + (y * p + x - p)行的第z个字符。 N代表未被虫蛀,P代表被虫蛀了。

Output

仅一行,代表郑爽需要的最大的4ab
将悬线扫描法推广至三维,同一层内记录以每个格子为左上角的最大全N正方形的边长a,另外记录以这个正方形边长,向前/后能延伸到的位置(相差b)。
由于方向任意,翻转坐标系计算三次可得到答案。
#include<cstdio>
#include<algorithm>
int p,q,r,ans=;
bool d[][][];
char s[][][];
int f[][][],f1[][][],f2[][][],stk[],stp=;
int min(int a,int b){return a<b?a:b;}
void maxs(int&a,int b){if(a<b)a=b;}
void calc(){
for(int i=;i<=p;++i){
for(int j=;j<=q;++j){
for(int k=;k<=r;++k){
f[i][j][k]=(s[i][j][k]?+min(f[i][j-][k],min(f[i][j-][k-],f[i][j][k-])):);
}
}
}
for(int j=;j<=q;++j){
for(int k=;k<=r;++k){
for(int i=;i<=p;++i){
while(stp&&f[stk[stp]][j][k]>f[i][j][k])f1[stk[stp--]][j][k]=i-;
stk[++stp]=i;
}
while(stp)f1[stk[stp--]][j][k]=p;
for(int i=p;i;--i){
while(stp&&f[stk[stp]][j][k]>f[i][j][k])f2[stk[stp--]][j][k]=i;
stk[++stp]=i;
}
while(stp)f2[stk[stp--]][j][k]=;
}
}
for(int i=;i<=p;++i){
for(int j=;j<=q;++j){
for(int k=;k<=r;++k){
maxs(ans,f[i][j][k]*(f1[i][j][k]-f2[i][j][k]));
}
}
}
}
int main(){
scanf("%d%d%d",&q,&p,&r);
for(int i=;i<=p;++i){
for(int j=;j<=q;++j){
scanf("%s",s[i][j]+);
for(int k=;k<=r;++k)s[i][j][k]=(s[i][j][k]=='N'?:);
}
}
calc();
for(int i=;i<=p;++i){
for(int j=;j<=q;++j){
for(int k=;k<=r;++k)if(!d[i][j][k]){
d[i][j][k]=d[j][i][k]=;
std::swap(s[i][j][k],s[j][i][k]);
}
}
}
std::swap(p,q);
calc();
for(int i=;i<=p;++i){
for(int j=;j<=q;++j){
for(int k=;k<=r;++k)if(d[i][j][k]){
d[i][j][k]=d[k][j][i]=;
std::swap(s[i][j][k],s[k][j][i]);
}
}
}
std::swap(p,r);
calc();
printf("%d\n",ans*);
return ;
}

bzojj1764: [Baltic2009]monument的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. bzoj1355: [Baltic2009]Radio Transmission

    将原串看成是循环节的后缀加上若干个循环节,那么考虑每种情况都会发现n-next[n]就是最小循环节.(一开始总输出n...然后发现build_next连调用都没有,%%% #include<cs ...

  3. bzoj 1761: [Baltic2009]beetle 区间dp

    1761: [Baltic2009]beetle Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 255  Solved: 92[Submit][Statu ...

  4. BZOJ 1355: [Baltic2009]Radio Transmission( kmp )

    自己YY一下可以发现answer =  n - fail[ n ] ------------------------------------------------------------------ ...

  5. BZOJ 1355: [Baltic2009]Radio Transmission [KMP 循环节]

    1355: [Baltic2009]Radio Transmission Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 792  Solved: 535 ...

  6. [Baltic2009]Radio Transmission

    bzoj 1355: [Baltic2009]Radio Transmission http://www.lydsy.com/JudgeOnline/problem.php?id=1355 Time ...

  7. 1355: [Baltic2009]Radio Transmission[循环节]

    1355: [Baltic2009]Radio Transmission Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 796  Solved: 538 ...

  8. BZOJ 1355: [Baltic2009]Radio Transmission

    Description 一个字符串最短周期. Sol KMP. 最短周期就是 \(n-next[n]\) 证明: 当该字符串不存在周期的时候 \(next[n]=0\) 成立. 当存在周期的时候 \( ...

  9. bzoj1760 [Baltic2009]Triangulation

    给定一个多边形的三角剖分(n<=1e5),且每个三角形有其颜色,问最多可以把这个三角剖分分成几个联通的部分,使任何一种颜色不出现在多个连通块中 建出三角剖分对应的树,同种颜色的点之间的路径是不能 ...

随机推荐

  1. VIM键盘快捷键映射

    http://www.jianshu.com/p/216811be226b

  2. yii点击上传图片后立即显示

    结合yii上传做的图片上传后立即显示,自己琢磨的,有点low <script type="text/javascript">//下面用于图片上传预览功能function ...

  3. Codeforces Round #260 (Div. 2) A B C 水 找规律(大数对小数取模) dp

    A. Laptops time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  4. JAG Practice Contest for ACM-ICPC Asia Regional 2016

    2016弱校联盟十一专场10.3 传送门 B. Help the Princess! 计算皇后和士兵谁先到达出口即可. C. We don't wanna work! 两个优先队列维护工作中积极性最小 ...

  5. Javascript对象属性与方法汇总

    Javascript对象属性与方法汇总 发布时间:2015-03-06 编辑:www.jquerycn.cn 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符 ...

  6. Visual Studio 2012 离线升级包的制作

    通过CMD执行“VS2012.3.exe/layout”命令,就可以把在线升级的文件保存到本地,这样一来,只要把下载出来的文件打包上传,然后分享出去,所谓的“VS2012 Update 3 离线升级包 ...

  7. Java——java多态

     /* * 多态: * 成员的特点: * 1.成员变量. *  编译时:参开引用型变量所属类中的是否有调用的成员变量,  有:编译通过,  没有  编译失败. *  运行时: 参考引用变量所属的类 ...

  8. SoftmaxLayer and SoftmaxwithLossLayer 代码解读

    SoftmaxLayer and SoftmaxwithLossLayer 代码解读 Wang Xiao 先来看看 SoftmaxWithLoss 在prototext文件中的定义: layer { ...

  9. QAction类详解:

    先贴一段描述:Qt文档原文: Detailed Description The QAction class provides an abstract user interface action tha ...

  10. Nginx重写规则指南 转

    http://www.ttlsa.com/nginx/nginx-rewriting-rules-guide/ Nginx重写规则指南 当运维遇到要重写情况时,往往是要程序员把重写规则写好后,发给你, ...