bzojj1764: [Baltic2009]monument
Description
Input
Output
#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的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- bzoj1355: [Baltic2009]Radio Transmission
将原串看成是循环节的后缀加上若干个循环节,那么考虑每种情况都会发现n-next[n]就是最小循环节.(一开始总输出n...然后发现build_next连调用都没有,%%% #include<cs ...
- bzoj 1761: [Baltic2009]beetle 区间dp
1761: [Baltic2009]beetle Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 255 Solved: 92[Submit][Statu ...
- BZOJ 1355: [Baltic2009]Radio Transmission( kmp )
自己YY一下可以发现answer = n - fail[ n ] ------------------------------------------------------------------ ...
- BZOJ 1355: [Baltic2009]Radio Transmission [KMP 循环节]
1355: [Baltic2009]Radio Transmission Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 792 Solved: 535 ...
- [Baltic2009]Radio Transmission
bzoj 1355: [Baltic2009]Radio Transmission http://www.lydsy.com/JudgeOnline/problem.php?id=1355 Time ...
- 1355: [Baltic2009]Radio Transmission[循环节]
1355: [Baltic2009]Radio Transmission Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 796 Solved: 538 ...
- BZOJ 1355: [Baltic2009]Radio Transmission
Description 一个字符串最短周期. Sol KMP. 最短周期就是 \(n-next[n]\) 证明: 当该字符串不存在周期的时候 \(next[n]=0\) 成立. 当存在周期的时候 \( ...
- bzoj1760 [Baltic2009]Triangulation
给定一个多边形的三角剖分(n<=1e5),且每个三角形有其颜色,问最多可以把这个三角剖分分成几个联通的部分,使任何一种颜色不出现在多个连通块中 建出三角剖分对应的树,同种颜色的点之间的路径是不能 ...
随机推荐
- apt-get 的常用使用说明
API神命令: apt-get -h >>help.txt apt 1.0.10.2ubuntu1,用于 amd64 体系结构,编译于 Oct 5 2015 15:55:05用法: apt ...
- 时间作为横轴的图表(morris.js)超越昨天的自己系列(8)
超越昨天的自己系列(8) morris.js的官网有详细的例子:http://www.oesmith.co.uk/morris.js/ 特别注意它的依赖: <link rel="sty ...
- 使用labview对kinect进行开发
一.必要工具: LabVIEW 2011 或更高版本 用于Microsoft Kinect的Kinesthesia工具包 - 利兹大学(University of Leeds) 详情参见(先注册ni) ...
- (单选后,显示相对应的div)点击免费没有变化,点击收费出现输入框
<li> <label class="feiyonglabel">活动费用</label> <div class="textbo ...
- List,set,Map 的用法和区别
Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap Collecti ...
- ✡ leetcode 160. Intersection of Two Linked Lists 求两个链表的起始重复位置 --------- java
Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...
- #梦断代码#first blood
前几天大致瞅了一眼,哇~原来不是啃代码的书,像是本小说,读起来很舒服,翻译的相当贴近生活,“这边厢......那边厢......”这类的语言很喜欢,还没看多少,对博客园比较新奇就先写个博客签个到,每天 ...
- linux之pid文件
在命令行中经常看到*.pid文件 其实这些文件是在启动进程的时候系统给这个进程的master进程分配的进程号 比如/usr/local/nginx/logs/nginx.pid文件 打开这个文件会发现 ...
- Mac下的利器们介绍
先说说一些快捷键吧,从windows下过来还不很习惯: ctrl + 开关 关机等提示 ctrl+shift+开关 关闭显示器 cmd+option+v 相当于剪贴 cmd+tab,对于最小化了的窗口 ...
- jquery获取高度错误(可以获取到宽度,但获取不到高度),及解决办法
<div class="foo"> <div style="display: none;"> 3333333 </div> ...