Maximum Submatrix 2
Codeforces Round #221 (Div. 1) B:http://codeforces.com/problemset/problem/375/B
题意:给你一个n*m的0,1矩阵,你可以交换一些行,求一个最大子矩阵的面积,这个子矩阵全部包含1.
题解:看标签是数据结构,怎么想,也不知道用数据结构怎么搞。最后想到是求面积,面积不就是l*d,只要确定了了l和d,面积就出来了,于是我想到了枚举l和d。这里要先处理出来一些东西,dp[j][i]表示(i,j)的右边的有多少个连续的1,包括(i,j),可以这么想,矩阵的左边一定出现在那一列,所以可以枚举列,对于固定左边来说,也就是起点固定了,那么狠容易想到,,要把连续1多的放在一起,所以要对该列进行排个序,然后就可以开始枚举,从上到下,因为最上面的是最短的,所以下面构成的面积才是我们想要的。得到最大的面积。表述不是很清晰,还是看代码吧。题解说用基数排序,但是我用了基数排序,发现比类库的排序要慢,也许是数据小的原因吧。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
int n,m,r[N][N];
char mp[N][N];
bool temp[N];
/*int counts[N],tmp[N];
int maxbit(int x){
int d=1;
for(int i=1;i<=n;i++){
int c=1;
int p=r[x][i];
while(p/10){
p=p/10;
c++;
}
if(c>d)
d=c;
}
return d;
}
void RadixSort(int x){
int d=maxbit(x);
int rr=1;
for(int i=0;i<d;i++){
for(int j=0;j<10;j++)
counts[j]=0;
for(int j=1;j<=n;j++) {
int k=r[x][j]/rr;
int q=k%10;
counts[q]++;
}
for(int j=1;j<10;j++){
counts[j]+=counts[j-1];
}
for(int j=n;j>=1;j--)
{
int p=r[x][j]/rr;
int s=p%10;
tmp[counts[s]-1]=r[x][j];
counts[s]--;
}
for(int j=0;j<n;j++){
r[x][j+1]=tmp[j];
}
rr=rr*10;
}
}*/
int main(){
while(~scanf("%d%d",&n,&m)){
memset(r,,sizeof(r));
for(int i=;i<=n;i++)
scanf("%s",mp[i]+);
for(int i=;i<=n;i++){
int temp=;
for(int j=m;j>=;j--){
if(mp[i][j]==''){
temp=;
}
else
temp++;
r[j][i]=temp;
}
}
int ans=;
for(int i=;i<=m;i++){
//RadixSort(i);
sort(r[i]+,r[i]+n+);
for(int j=;j<=n;j++){
ans=max(ans,r[i][j]*(n-j+));
}
}
printf("%d\n",ans);
}
}
Maximum Submatrix 2的更多相关文章
- CF 375B Maximum Submatrix 2[预处理 计数排序]
		
B. Maximum Submatrix 2 time limit per test 2 seconds memory limit per test 512 megabytes input stand ...
 - Codeforces Round #221 (Div. 1) B. Maximum Submatrix 2 dp排序
		
B. Maximum Submatrix 2 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset ...
 - Maximum Submatrix & Largest Rectangle
		
相关题型 问题一(最大和子矩阵) : 有一个 m x n 的矩阵,矩阵的元素可正可负.请找出该矩阵的一个子矩阵(方块),使得其所有元素之和在所有子矩阵中最大.(问题来源:http://acm.pku. ...
 - cf D. Maximum Submatrix 2
		
http://codeforces.com/contest/376/problem/D 题意:给你一个矩阵,可以随意排列n行的次序,然后找出全部含有1的子矩阵.输出1的个数. 思路:c[i][j]表示 ...
 - Codeforces 375B Maximum Submatrix 2 (DP)
		
<题目链接> 题目大意:给出一个01矩阵,行与行之间可以互换位置,问能够得到最大的全1矩阵的面积. #include <bits/stdc++.h> using namespa ...
 - 【Codeforces 375B】Maximum Submatrix 2
		
[链接] 我是链接,点我呀:) [题意] 如果任意行之间可以重新排序. 问你最大的全是1的子矩阵中1的个数 [题解] 设cnt[i][j] 表示(i,j)这个点往右连续的1的个数 我们枚举列j 然后对 ...
 - Codeforces 375
		
A 7的所有的余数都可以用1,6,8,9排列得到,然后搞一下就可以了. B 可以用类似于单调队列的东西搞.具体看代码: /* * Problem: B. Maximum Submatrix 2 * A ...
 - HOJ题目分类
		
各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...
 - Soj题目分类
		
-----------------------------最优化问题------------------------------------- ----------------------常规动态规划 ...
 
随机推荐
- 淘宝分布式数据层:TDDL[转]
			
淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个 ...
 - iOS开发中关于UIImage的知识点总结
			
UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage.今天我们主要聊一聊UIImage的三个属性: image ...
 - gdb - 列出所有函数调用
			
How can we list all the functions being called in an application For any realistically sized applica ...
 - 一个很简单的SqlServer生成常用C#语句工具的诞生
			
前言: 这个文章只要是记录一下,这个工具的诞生过程.作用.其中的技术实在是太简单可以说没有什么技术~主要是锻炼一下写文章的能力! 正文: 在开发项目的时,常常会要维护或变更一些老项目,涉及到简单的几张 ...
 - Android热门网络框架Volley详解
			
.Volley简介 volley的英文意思为‘群发’.‘迸发’.Volley是2013年谷歌官方发布的一款Android平台上的网络通信库.Volley非常适合一些数据量不大,但需要频繁通信的网络操作 ...
 - Java基础知识强化之集合框架笔记14:List集合存储字符串并遍历
			
1. List集合存储学生对象并遍历: 需求:存储字符串并遍历 分析: (1)创建集合对象 (2)创建字符串对象 (3)添加字符串对象到集合中 (4)遍历集合 2. 代码示例: package cn. ...
 - html+css3实现网页时钟
			
在网页上实现时钟功能,效果如右图所示: 运用到的关键技术有:css3中的旋转.旋转基点设置 旋转:transform:rotate(*deg) 旋转基点:transform-origin: x轴偏移 ...
 - C# Socket通信 小案例
			
本文将编写2个控制台应用程序,一个是服务器端(server),一个是客户端(client), 通过server的监听,有新的client连接后,接收client发出的信息. server代码如下: u ...
 - TOKEN的保存与验证
			
Token主要为了防止非本页数据的提交,防止重复提交. /** * * 保存TOKEN信息 * */ public void saveToken() { //此处生成md5串 string md5 = ...
 - 利用SQLiteOpenHelper创建数据库,进行增删改查操作
			
Android中提供SQLiteOpenHelper类,在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象.继承和扩展SQLiteOpenHelper类主要做的工作就是重写 ...