应该是第一次写这种图形类的DP。。

  一个“I”可以分成三个矩形。。令f[1..3][i][j][k]表示第几个矩形,下边界为第i行的j~k列,的最大面积。

  然后就是各种优化啊什么的。。。时间复杂度O(nm²)

  一开始一个辅助的区间DP写挂然后调了半天TAT

 #include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=;
const int inf=;
int f[][][maxn][maxn];
int sm[maxn][maxn],mx1[maxn][maxn],mx2[maxn][maxn];
int n,m,pre,now,ans,tmpmx; int ra;char rx;
inline int read(){
rx=getchar(),ra=;
while(rx<''||rx>'')rx=getchar();
while(rx>=''&&rx<='')ra*=,ra+=rx-,rx=getchar();return ra;
}
inline int max(int a,int b){return a>b?a:b;}
inline int min(int a,int b){return a<b?a:b;}
int main(){
register int i,j,k;
n=read(),m=read();
for(i=;i<=n;i++)
for(j=;j<=m;j++)sm[i][j]=sm[i][j-]+read();
for(i=;i<=m;i++)sm[][i]=i; now=,pre=;
for(i=;i<=;i++)memset(f[][i],,sizeof(f[][i]));
for(i=;i<=n;i++,swap(now,pre)){
for(j=;j<m;j++)for(k=j+;k<=m;k++)
if(sm[i][k]==sm[i][j-])
f[now][][j][k]=(sm[i-][k]==sm[i-][j-]?f[pre][][j][k]:)+k-j+;
else f[now][][j][k]=-inf; for(j=;j<m;j++)for(k=m,tmpmx=-inf;k>j;k--)
tmpmx=max(tmpmx,f[pre][][j][k]),
mx1[j][k]=max(mx1[j-][k],tmpmx);
for(j=;j<m;j++)for(k=j;k<m;k++)
if(sm[i][k]==sm[i][j-]){
f[now][][j][k]=f[pre][][j][k]+k-j+;
if(sm[i-][k+]==sm[i-][j-])
f[now][][j][k]=max(f[now][][j][k],mx1[j-][k+]+k-j+);
}
else f[now][][j][k]=-inf; for(j=;j<m;j++)mx2[j][j]=f[pre][][j][j];
for(j=;j<m;j++)
for(k=;k<m-j;k++)
mx2[k][k+j]=max(mx2[k][k+j-],max(mx2[k+][k+j],f[pre][][k][k+j])); for(j=;j<m;j++)for(k=j+;k<=m;k++){
if(sm[i][k]==sm[i][j-])
f[now][][j][k]=max(f[pre][][j][k],mx2[j+][k-])+k-j+;
else f[now][][j][k]=-inf;
if(f[now][][j][k]>ans)ans=f[now][][j][k];
}
}
printf("%d\n",ans);
return ;
}

[bzoj1910] [Ctsc2002] Award 颁奖典礼的更多相关文章

  1. BZOJ [Ctsc2002] Award 颁奖典礼 解题报告

    [Ctsc2002] Award 颁奖典礼 Description IOI2002的颁奖典礼将在YONG-IN Hall隆重举行.人们在经历了充满梦幻的世界杯之后变得更加富于情趣.为了使颁奖典礼更具魅 ...

  2. bzoj AC倒序

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

  3. Got the Best Employee of the year 2015 Star Award

    Got "The Best Employee of the year 2015 Star Award" from the company, thanks to all that h ...

  4. 依网友要求发个修改award bios的方法(刷CPU微码)

    注意本文修改的是award BIOS 首先看自己的CPUID是哪个代码,打开CPU-Z如下图红圈中就是,此CPUID就是067A,好了下面就可以开始准备工作 准备好BIOS文件,以及CPU微码文件.可 ...

  5. [Bzoj 2547] [Ctsc2002] 玩具兵

    2547: [Ctsc2002]玩具兵 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 317  Solved: 152[Submit][Status] ...

  6. 【Turing Award】Robin Milner And Butler W. Lampson

    1991 罗宾·米尔纳(Robin Milner) Robin Milner(13 January 1934 – 20 March 2010) Introduction : Milner was bo ...

  7. 2019年猪年颁奖典礼、公司年会、跨年晚会、科技会议、年终答谢会之幕布背景展板PSD模板-第三部分

    16套--2019年猪年颁奖典礼.公司年会.跨年晚会.科技会议.年终答谢会之幕布.背景和展板PSD模板,免费颁奖典礼PSD展板背景幕布,下载地址:百度网盘,https://pan.baidu.com/ ...

  8. BZOJ2548:[CTSC2002]灭鼠行动

    我对模拟的理解:https://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem ...

  9. 历届图灵奖 (Turing award)得奖名单

    历届图灵奖 (Turing award)得奖名单 一.总结 一句话总结:各个方面都有. 二.历届图灵奖 (Turing award)得奖名单 Turing奖最早设立于1966年,是美国计算机协会在计算 ...

随机推荐

  1. socket编程部分API

    以TCP协议为例,UNIX的相关API int socket(int domain , int type , int protocol); 根据指定的地址族,数据类型,协议来分配一个socket的描述 ...

  2. bzoj 4537 HNOI2016 最小公倍数

    Description 给定一张N个顶点M条边的无向图(顶点编号为1,2,-,n),每条边上带有权值.所有权值都可以分解成2^a*3^b的形式.现在有q个询问,每次询问给定四个参数u.v.a和b,请你 ...

  3. 解析JSON的两种方法eval()和JSON.parse()

    解析JSON 一种方法是使用eval函数. var dataObj = eval("("+json+")"); 必须把文本包围在括号中,这样才能避免语法错误,迫 ...

  4. linux shadowsocket 安装和启动

    http://blog.csdn.net/hanshileiai/article/details/49302865

  5. Java中使用LocalDate根据日期来计算年龄

    Java中和日期直接相关的类有很多,平时最常用到的就是java.util package下面的Date和Calendar,需要用到格式的时候还会用到java.text.SimpleDateFormat ...

  6. primer漏配问题解决

    在对之前的ITS数据(454数据)做split时,发现有一些reads没有被匹配上,但是barcode能够完全匹配,虽然之后的primer在中间漏了一个碱基,导致后面的碱基全部误匹配,从而导致这条re ...

  7. Netty之多用户的聊天室(三)

    Netty之多用户的聊天室(三) 一.简单说明 笔者有意将Netty做成一个系列的文章,因为笔者并不是一个善于写文章的人,而且笔者学习很多技术一贯的习惯就是敲代码,很多东西敲着敲着就就熟了,然后再进行 ...

  8. Java实现矩阵计算器【代码】

    其实这个程序最开始是大二下学期Java的一次平时作业,当时只要求产生几个随机矩阵并对这些矩阵进行计算. 所以当时没去实现现在这么丰富而且实用的功能.不过当时倒是挺想去做的,无奈有些不知道怎么去实现. ...

  9. 阿里maven仓库地址 和 oschina maven仓库地址

    <mirror>     <id>nexus-aliyun</id>     <mirrorOf>*</mirrorOf>     < ...

  10. Python玩转硬件:TPYBoard-Micropython开发板大盘点

    学习python能做什么? 可以快速搭建一个漂亮的网站 可以写爬虫 实现微信机器人助手 可以实现很多自动化的任务 -- IEEE发布2017年编程语言排行榜:Python更是高居首位,那么Python ...