BZOJ [Ctsc2002] Award 颁奖典礼 解题报告
[Ctsc2002] Award 颁奖典礼
Description
IOI2002的颁奖典礼将在YONG-IN Hall隆重举行。人们在经历了充满梦幻的世界杯之后变得更加富于情趣。为了使颁奖典礼更具魅力,有人建议在YONG-IN Hall中搭建一个I字型的颁奖台,以此代表信息学Informatics。考虑到比赛的赞助商们可能要在YONG-IN Hall中摆设了许多展示台,他们可能不愿意移动展示台的位置。你作为IOI2002的金牌得主自然地成为了他们求助的对象。 YONG-IN Hall是一个矩形的网格区域。每个赞助商的展示台都占据了若干个单位网格。I型颁奖台将正向搭建,且平行于YONG-IN Hall的边缘。I型颁奖台是由三个矩形相接叠成的,其中上方和下方的矩形的两侧必须都超出中间的矩形,否则将被误解成T, L, J等字母。
例如:
这是两个合法的I型颁奖台,而以下三种情况均不合法:

希望你编程寻找面积最大的I型颁奖台,使其不覆盖任何展示台。
Input
第一行包含两个正整数n, m(1<=n,m<=200),分别表示YONG-IN Hall的矩形网格区域的行数和列数。以下n行每行包含m个数字,非0即1,每个数字描述一个单位网格,1表示该单位网格存在展示台,0表示该单位网格不存在展示台。
Output
仅包含一个正整数,表示最大的I型颁奖台的面积。如果不存在合法的I型颁奖台,则输出0。
大力DP+前缀和优化
把字母"I"看成三个矩形
\(dp[i][k][l][r]\)表示第\(i\)行做到第\(k\)个矩形左边界为\(l\)右边界为\(r\)的最大面积
枚举四维后我们发现不换矩形可以\(O(1)\)转移
但换矩形得多枚举两维,于是用RMQ前缀和先处理一下作为优化
Code:
DewOS:我怀疑我自己程序写的有问题但它过了就不管啦
#include <cstdio>
#include <cstring>
int max(int x,int y){return x>y?x:y;}
const int N=202;
int dp[3][N][N][N],f[2][N][N],f0[N][N];
int n,m,is[N][N],ans;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%d",&is[i][j]);
f0[i][j]=f0[i][j-1]+is[i][j];
}
memset(dp,-0x3f,sizeof(dp));
memset(f,-0x3f,sizeof(f));
memset(dp[0][0],0,sizeof(dp[0][0]));
for(int i=1;i<=n;i++)
for(int k=2;k>=0;k--)
{
for(int l=1;l<=m;l++)
for(int r=l;r<=m;r++)
{
if(f0[i][r]==f0[i][l-1])
{
if(!k) dp[k][i-1][l][r]=max(dp[k][i-1][l][r],0);
dp[k][i][l][r]=dp[k][i-1][l][r]+(r+1-l);
if(k==1) dp[k][i][l][r]=max(dp[k][i][l][r],f[k-1][l-1][r+1]+(r+1-l));
else if(k==2) dp[k][i][l][r]=max(dp[k][i][l][r],f[k-1][l+1][r-1]+(r+1-l));
}
}
if(!k)
{
for(int l=1;l<=m;l++)
for(int r=m;r>=l;r--)
f[k][l][r]=max(dp[k][i][l][r],max(f[k][l][r+1],f[k][l-1][r]));
}
else if(k==1)
{
for(int l=m;l;l--)
for(int r=l;r<=m;r++)
f[k][l][r]=max(dp[k][i][l][r],max(f[k][l][r-1],f[k][l+1][r]));
}
else
{
for(int l=1;l<=m;l++)
for(int r=l;r<=m;r++)
ans=max(ans,dp[k][i][l][r]);
}
}
printf("%d\n",ans);
return 0;
}
2018.7.26
BZOJ [Ctsc2002] Award 颁奖典礼 解题报告的更多相关文章
- BZOJ 4619 Swap Space 解题报告
今天是因为David Lee正好讲这个题的类似题,我才做了一下. 本题是world final 2016的一道水…… 题目地址如下 http://www.lydsy.com/JudgeOnline/p ...
- BZOJ 2839: 集合计数 解题报告
BZOJ 2839: 集合计数 Description 一个有\(N\)个元素的集合有\(2^N\)个不同子集(包含空集),现在要在这\(2^N\)个集合中取出若干集合(至少一个),使得 它们的交集的 ...
- BZOJ 1367 [Baltic2004]sequence 解题报告
BZOJ 1367 [Baltic2004]sequence Description 给定一个序列\(t_1,t_2,\dots,t_N\),求一个递增序列\(z_1<z_2<\dots& ...
- BZOJ 1044 木棍分割 解题报告(二分+DP)
来到机房刷了一道水(bian’tai)题.题目思想非常简单易懂(我的做法实际上参考了Evensgn 范学长,在此多谢范学长了) 题目摆上: 1044: [HAOI2008]木棍分割 Time Limi ...
- BZOJ 4341 [CF253 Printer] 解题报告
乍一看这个题好像可以二分优先度搞搞... 实际上能不能这么搞呢...? 我反正不会... 于是开始讲我的乱搞算法: 首先肯定要把任务按照优先度排序. 用一棵在线建点的线段树维护一个时刻是否在工作. 然 ...
- BZOJ 4036 [HAOI2015] Set 解题报告
首先我们不能一位一位的考虑,为什么呢? 你想想,你如果一位一位地考虑的话,那么最后就只有 $n$ 个数字,然而他给了你 $2^n$ 个数字,怎么看都不对劲呀.(我是因为这样子弄没过样例才明白的) 所以 ...
- BZOJ 3288 Mato矩阵 解题报告
这个题好神呀..Orz taorunz 有一个结论,这个结论感觉很优美: $$ans = \prod_{i=1}^{n}\varphi(i)$$ 至于为什么呢,大概是这样子的: 对于每个数字 $x$, ...
- BZOJ 4123 [Baltic2015] Hacker 解题报告
首先,Alice 会选择一个长度为 $\lfloor\frac{n+1}{2}\rfloor$ 的区间,我们把这个长度记为 $len$. 有这么一个结论:令 $F_i$ 为覆盖 $i$ 点的所有长度为 ...
- BZOJ 4146 [AMPPZ2014] Divisors 解题报告
这个题感觉比较小清新... 我们记录每个数出现的次数 $T_i$. 首先依次枚举每个数字,令 $ans = ans + T_i \times (T_i - 1)$,然后枚举这个数的倍数,令 $ans ...
随机推荐
- libevent学习四(Working with events)
1.事件的分类 文件可写 文件可读 超时发生 信号发生 用户触发事件 2事件的生命周期 --非 persistent ...
- Windows运行机理——窗口句柄和消息
Windows运行机理这系列文章都是来至于<零基础学Qt4编程>——吴迪,个人觉得写得很好,所以进行了搬运和个人加工 现在我们将消息与句柄联系起来.假如有一个窗口,且拥有该窗口的一个句柄( ...
- es6笔记4^_^function
一.function默认参数 现在可以在定义函数的时候指定参数的默认值了,而不用像以前那样通过逻辑或操作符来达到目的了. es5 function sayHello(name){ //传统的指定默认参 ...
- OpenMPI源码剖析2:ompi_mpi_errors_are_fatal_comm_handler函数
上一篇文章说道,初始化失败会有一个函数调用: ompi_mpi_errors_are_fatal_comm_handler(NULL, NULL, message); 所以这里简单地进入了 ompi_ ...
- [递推+矩阵快速幂]Codeforces 1117D - Magic Gems
传送门:Educational Codeforces Round 60 – D 题意: 给定N,M(n <1e18,m <= 100) 一个magic gem可以分裂成M个普通的gem ...
- maven 教程二 深入
一:编写POM <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...
- BZOJ 3924 ZJOI2015 幻想乡战略游戏 树链剖分
题目链接:https://www.luogu.org/problemnew/show/P3345(bzoj权限题) 题意概述:动态维护树的上所有点到这棵树的带权重心的距离和.N,Q<=10000 ...
- UVALive - 6864 Strange Antennas 扫描线
题目链接: http://acm.hust.edu.cn/vjudge/problem/87213 Strange Antennas Time Limit: 3000MS 题意 一个雷达能够辐射到的范 ...
- TCP 的有限状态机
TCP 有限状态机的图中每一个方框都是 TCP 可能具有的状态. 每个方框中的大写英文字符串是 TCP 标准所使用的 TCP 连接状态名. 状态之间的箭头表示可能发生的状态变迁. 箭头旁边的字,表明引 ...
- lintcode-34-N皇后问题 II
34-N皇后问题 II 根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局. 样例 比如n=4,存在2种解决方案 标签 递归 思路 参考http://www.cnblogs.com ...