BZOJ 2228 礼物(gift)(最大子长方体)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2228
题意:给出一个只含有NP两种字母的长方体。从中找出只含有字母N的长方体,造型为a*a*b,即必须有两个正方形的底。在此基础上使得a*b最大?
思路:首先对于p*q*r的长方体,可以枚举a*a这个面在p*q、p*r、q*r。不妨现在假设a*a在q*r这个面上。那么对于p个面,我们用f[i][j][k]表示在第i个面上,以(j,k)为右下角的最大正方形的边长。之后,对于p个面的每个(j,k)位置,就好比是给出一个数列,找到一个区间[L,R],使得区间最小值与区间长度之积最大。
int p,q,r,f[N][N][N];
char s[N][N][N],s1[N][N][N];
int cal(int a[],int n)
{
int left[N],right[N],ans=0,i;
a[0]=a[n+1]=-1;
FOR1(i,n) left[i]=right[i]=i;
FOR1(i,n)
{
while(a[i]<=a[left[i]-1]) left[i]=left[left[i]-1];
}
FORL1(i,n)
{
while(a[i]<=a[right[i]+1]) right[i]=right[right[i]+1];
}
FOR1(i,n) upMax(ans,(right[i]-left[i]+1)*a[i]);
return ans;
}
int cal(int p,int q,int r,char s[N][N][N])
{
int i,j,k;
int ans=0;
FOR1(i,p)
{
FOR1(j,q) FOR1(k,r)
{
if(s[i][j][k]=='P') f[i][j][k]=0;
else
{
f[i][j][k]=min(f[i][j-1][k],f[i][j][k-1]);
f[i][j][k]=min(f[i][j][k],f[i][j-1][k-1]);
f[i][j][k]++;
}
}
}
int a[N];
FOR1(j,q) FOR1(k,r)
{
FOR1(i,p) a[i]=f[i][j][k];
upMax(ans,cal(a,p));
}
return ans;
}
int main()
{
RD(q,p,r);
int i,j,k,ans=0;
FOR1(i,p) FOR1(j,q) RD(s[i][j]+1);
upMax(ans,cal(p,q,r,s));
FOR1(j,q) FOR1(i,p) FOR1(k,r) s1[j][i][k]=s[i][j][k];
upMax(ans,cal(q,p,r,s1));
FOR1(k,r) FOR1(i,p) FOR1(j,q) s1[k][i][j]=s[i][j][k];
upMax(ans,cal(r,p,q,s1));
PR(ans<<2);
}
BZOJ 2228 礼物(gift)(最大子长方体)的更多相关文章
- bzoj 3055礼物运送 floyed + 状压DP
bzoj 3055: 礼物运送 floyed first 设f[i][S]表示取到了S集合中的所有点(不一定是经过的所有点),最后停在了i的最优值. 初始就f[i][{i}] = dis[1][i] ...
- 【降维解法:最大字段和->最大子矩阵和->最终版最大子长方体和】【UVA10755】Garbage Heap
突然感觉刷完这一套专题后 码力有了质的飞跃,fighting 努力会有结果! 最大字段和是一个很经典的问题 O(n)算法 而对于最大子矩阵和 可以思考一个这样的想法 枚举上下边界i,j把i到j这一段的 ...
- bzoj 4827 礼物
bzoj 4827 礼物 可以看做将其中一个数列(假定为 \(a\) )都加上 \(c\) , \(c\) 可以为负数.易知这里 \(-m\leq c\leq m\). 记要求的答案为 \(ans\) ...
- BZOJ 2142: 礼物 [Lucas定理]
2142: 礼物 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1294 Solved: 534[Submit][Status][Discuss] ...
- BZOJ 2142 礼物 组合数学 CRT 中国剩余定理
2142: 礼物 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1450 Solved: 593[Submit][Status][Discuss] ...
- 【刷题】BZOJ 2142 礼物
Description 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E 心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多.小E从商店 ...
- 礼物gift(DP)
这道题的DP非常的有意思…… 一开始我们总是会以为这是一个背包问题,直接dp[0] = 0,dp[j] += dp[j-c[i]]进行转移.之后统计一下从dp[m-minn]~dp[m]的答案之和为结 ...
- bzoj 2142: 礼物【中国剩余定理+组合数学】
参考:http://blog.csdn.net/wzq_qwq/article/details/46709471 首先推组合数,设sum为每个人礼物数的和,那么答案为 \[ ( C_{n}^{sum} ...
- bzoj2228[ZJOI2011]礼物(gift)
据说联赛之前写题解可以涨RP 这题的输入格式半天没看懂-其实是有q层摞在一起,每一层大小都是p*r,依次输入q层的情况.那么首先我们枚举三种挖方块的姿势,分别使切出的方块的上面/前面/右面是正方形的面 ...
随机推荐
- 【POJ】【1160】Post Office
DP/四边形不等式 邮局,经典的四边形不等式例题! 关于四边形不等式的学习请看 赵爽论文<动态规划加速原理之四边形不等式> 题目总结&题解:http://blog.csdn.net ...
- 标准SQL
1. SQL语句对大小写不敏感! 2. 查询和更新指令构成了 SQL 的 DML 部分: SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中 ...
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
这个类型的resource 后面多个SRGB 表示SRGB空间是指gamma 矫正系数为2.2的色彩空间,这个问题我没有问别人,是我自己是上网查的,我觉得我不是个女人了......我又level up ...
- mysql Communications link failure,C3p0的参数详解
MySQL默认一个连接空闲8小时候就会自动断开,而这时程序以为连接还能使用,然后在使用的时候就会出现Communications link failure异常. 这时需要进行两步设置,有时候只设置My ...
- tomcat集群 (自带Cluster集群)
不用借助其他任何工具,tomcat自身就可以实现session共享,实现集群.以下为大概步骤 1,如果是在同一台机器上,请保持多个tomcat端口(一个tomcat对应三个端口)不相同:如果是不同机器 ...
- Codeforces Round #253 (Div. 2) D题
题目大意是选出一个其他不选,问问最大概率: 刚开始想到DP:F[I][J][0]:表示从 前I个中选出J个的最大值, 然后对于F[I][J][1]=MAX(F[I-1][J][1],F[I-1][J- ...
- hdu 1171
求能装入大小为sum/2的背包的最大价值 #include <cstdio> #include <cstdlib> #include <cmath> #includ ...
- JavaScript面向对象+Array的用法及字符串组合+动态建立锚点
脚本部分: function school(sName,sDddress,sPhone,sMail) { this.SName = sName; this.SAddress = sDddress; t ...
- HDU 4034 Graph(floyd,最短路,简单)
题目 一道简单的倒着的floyd. 具体可看代码,代码可简化,你有兴趣可以简化一下,就是把那个Dijsktra所实现的功能放到倒着的floyd里面去. #include<stdio.h> ...
- 从.NET 1.1 升级到.NET 4.0 遇到 线程间操作无效: 从不是创建控件 [XX] 的线程访问它.
有两种方式解决 1.在窗体构造函数中写Control.CheckForIllegalCrossThreadCalls =false;2.使用Invoke等委托函数 问题原因是 .NET2.0 以后拒绝 ...