题目描述

Description

Hzgd神牛准备给自己盖一座很华丽的宫殿。于是,他看中了一块N*M的矩形空地。空地中每个格子都有自己的海拔高度。胡张想让他的宫殿的平均海拔在海平面之上(假设海平面的高度是0,平均数都会算吧?)。而且,胡张希望他的宫殿是个矩形且尽量大,能够容纳更多的人来膜拜他。请问胡张的宫殿最后会有多大?

Input Format

第一行为N和M。之后N行,每行M个数,描述的空地的海拔。

Output Format

输出一行,表示宫殿最大面积。

Sample Input
3 2
4 0
-10 8
-2 -2

Sample Output

4

Data Limit

对于30%的数据,N,M≤50;

对于100%的数据,N,M≤200;

被坑惨了……不开longlong就爆蛋开了longlong马上AC

做了今年noip初赛的最后一题之后顿时觉得这题不难

首先预处理出每一行的前缀和,用rowsum[i][j]表示第i行前j个数的和

然后枚举子矩阵的纵坐标的起始点和结束点,问题转化为求一个序列中最长的和>=0的子串的长度

先算出序列中所有长度的前缀和,然后记录下原来的位置直接排序一下

那么新的有序序列中前缀和是递增的

考虑从l到r的子串何时能更新最大值:

当sum[r]-sum[l-1]>=0且l<=r时才可以

排序之后保证了sum数组的不降性质,因此只需要原来保存的rank也满足不降就可以更新答案了

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#include<set>
#include<map>
#include<ctime>
#define LL long long
#define inf 598460606
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971
#define N 1000
using namespace std;
struct aaa{
LL rnk,x;
}b[1000];
bool operator < (const aaa &a,const aaa &b)
{return a.x<b.x||a.x==b.x&&a.rnk<b.rnk;}
inline LL read()
{
LL x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int n,m;
LL rowsum[N][N],ans;
int main()
{
n=read();m=read();
for(int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
rowsum[i][j]=rowsum[i][j-1]+read();
for (int i=1;i<=m;i++)
for(int j=i;j<=m;j++)
{
LL sum=0;
b[0].x=0;b[0].rnk=0;
for (int k=1;k<=n;k++)
{
sum+=rowsum[k][j]-rowsum[k][i-1];
b[k].x=sum;
b[k].rnk=k;
}
sort(b,b+n+1);
LL mn=b[0].rnk,l=(j-i+1);
for(int k=0;k<=n;k++)
{
if(b[k].rnk>mn)ans=max(ans,l*(b[k].rnk-mn));
mn=min(mn,b[k].rnk);
}
}
printf("%lld\n",ans);
}

  

最新文章

  1. java.lang.UnsupportedClassVersionError: TwoSum : Unsupported major.minor version 52.0
  2. hibernate3与ehcache-2.8.3配合使用,在多个SessionFactory实例的情况下出现&ldquo;Another unnamed CacheManager already exists in the same VM&rdquo;问题
  3. django - transaction
  4. Sublime Text 教程
  5. enableEventValidation
  6. mysql加密解密方式用法
  7. IOS使用pods初次加载出现Pods-resources.sh: Permission denied错误的解决方案
  8. ORACLE EBS 表空间控制
  9. $(&quot;li&quot;)是对象类型不是数组类型
  10. Winsock编程基础2(UDP流程)
  11. Lock锁方式解决线程安全问题
  12. Linux系统安全学习笔记(1)-- 文件系统类型
  13. 五、LCD屏填充纯色
  14. python------模块定义、导入、优化 -------&gt;re模块
  15. vue项目打包后css背景图路径不对的问题
  16. centos7的防火墙(firewalld)
  17. shell中的IFS和$*变量
  18. github上fork原项目,如何将本地仓库代码更新到最新版本?
  19. 二、git remote
  20. iOS7中Cell高度 Label高度自适应

热门文章

  1. 字符串转换为float&lt;2&gt;
  2. Mac OS X Mavericks使用手册
  3. shell脚本中局部变量local
  4. UVa 11401 三角形的个数
  5. DBA 经典面试题(4)
  6. C++小知识之sprintf用法
  7. 04747_Java语言程序设计(一)_第10章_网络与数据库编程基础
  8. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
  9. openssl ans.1编码规则分析及证书密钥编码方式
  10. EffectiveC#9--明白几个相等运算之间的关系