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层的情况.那么首先我们枚举三种挖方块的姿势,分别使切出的方块的上面/前面/右面是正方形的面 ...
随机推荐
- 【BZOJ】【3522】【POI2014】Hotel
暴力/树形DP 要求在树上找出等距三点,求方案数,那么用类似Free Tour2那样的合并方法,可以写出: f[i][j]表示以 i 为根的子树中,距离 i 为 j 的点有多少个: g[i][j]表示 ...
- 【BZOJ】【2756】【SCOI2012】奇怪的游戏
网络流-最大流 这题……建模部分先略过 这道题是会卡时限的T_T俺的Dinic被卡了,在此放几篇很棒的讲网络流算法的文章,至于大家耳熟能详的论文就不放了…… http://www.cppblog.co ...
- Android系统软件卸载方法
最简单直接的卸载方式当然是用Re文件浏览器进系统软件目录删除即可,其次是用LBE等工具卸载系统软件.不过发现系统软件卸载后还会有桌面图标,怎么都干不掉,真是匪夷所思啊!简直就打不死的小强 系统软件装在 ...
- Discuz! X3.1去除内置门户导航/portal.php尾巴的方法
方法: 打开文件 /source/admincp/admincp_domain.php 查找 [php] if(!empty($domain) && in_array($domain, ...
- 查找出现次数大于n/k的重复元素
本文是对一篇英文论文的总结:Finding Repeated Elements.想看原文,请Google之. 这个问题的简单形式是“查找出现次数大于n/2的重复元素”.我们先从简单问题开始,然后再做扩 ...
- asp.net 认证与授权
1.下面的例子在web.config文件中配置网站使用asp.net forms 身份认证方式: <configuration> <system.web> <authen ...
- SGU 104
104. Little shop of flowers time limit per test: 0.25 sec. memory limit per test: 4096 KB PROBLEM Yo ...
- Wamp Mysql错误消息 语言设置
Wamp Mysql错误消息 语言设置 http://my.oschina.net/wandershi/blog/264347 打开my.ini 找到 [wampmysqld] port = 33 ...
- Android——横屏和竖屏的切换,以及明文密码的显示
查看API文档: android.content.pm.ActivityInfo 在手机的使用中,我们要根据不同的需求来改变屏幕的显示方向,一般在浏览信息时是竖屏,在玩游戏的时候就要切换到横屏. ...
- UVA 10341 二分搜索
Solve the equation:p ∗ e−x + q ∗ sin(x) + r ∗ cos(x) + s ∗ tan(x) + t ∗ x2 + u = 0where 0 ≤ x ≤ 1.In ...