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的更多相关文章

  1. CF 375B Maximum Submatrix 2[预处理 计数排序]

    B. Maximum Submatrix 2 time limit per test 2 seconds memory limit per test 512 megabytes input stand ...

  2. 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 ...

  3. Maximum Submatrix & Largest Rectangle

    相关题型 问题一(最大和子矩阵) : 有一个 m x n 的矩阵,矩阵的元素可正可负.请找出该矩阵的一个子矩阵(方块),使得其所有元素之和在所有子矩阵中最大.(问题来源:http://acm.pku. ...

  4. cf D. Maximum Submatrix 2

    http://codeforces.com/contest/376/problem/D 题意:给你一个矩阵,可以随意排列n行的次序,然后找出全部含有1的子矩阵.输出1的个数. 思路:c[i][j]表示 ...

  5. Codeforces 375B Maximum Submatrix 2 (DP)

    <题目链接> 题目大意:给出一个01矩阵,行与行之间可以互换位置,问能够得到最大的全1矩阵的面积. #include <bits/stdc++.h> using namespa ...

  6. 【Codeforces 375B】Maximum Submatrix 2

    [链接] 我是链接,点我呀:) [题意] 如果任意行之间可以重新排序. 问你最大的全是1的子矩阵中1的个数 [题解] 设cnt[i][j] 表示(i,j)这个点往右连续的1的个数 我们枚举列j 然后对 ...

  7. Codeforces 375

    A 7的所有的余数都可以用1,6,8,9排列得到,然后搞一下就可以了. B 可以用类似于单调队列的东西搞.具体看代码: /* * Problem: B. Maximum Submatrix 2 * A ...

  8. HOJ题目分类

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  9. Soj题目分类

    -----------------------------最优化问题------------------------------------- ----------------------常规动态规划 ...

随机推荐

  1. Bluetooth 4.0之Android 解说

     Android平台包括了对蓝牙网络协议栈的支持,它同意一个蓝牙设备跟其它的蓝牙设备进行无线的数据交换.应用程序通过Android蓝牙API提供訪问蓝牙的功能. 这些API会把应用程序无线连接到其 ...

  2. (hdu step 6.3.1)Strategic Game(求用最少顶点数把全部边都覆盖,使用的是邻接表)

    题目: Strategic Game Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...

  3. java websockect

    https://github.com/TooTallNate/Java-WebSocket (websockect类库包) http://blog.openlg.net/index.php/archi ...

  4. 粗谈pcap_next_ex()

      pcap_next_ex(pcap_t* p,struct pcap_pkthdr** pkt_header,const u_char** pkt_data) 功能: 从interface或离线记 ...

  5. Python数据类型(元组、列表、字符串、字典)

    元组tuple:不可修改的数据类型 ABC = ('a', 1, x, 'today') 列表list:可修改的数据类型 ABC = ['a', 1, x, 'today'] 字符串set: ABC ...

  6. 17、SQL Server 备份和还原

    SQL Server 备份 恢复模式 SQL Server 数据恢复模式分为三种:完整恢复模式.大容量日志恢复模式.简单恢复模式. 完整恢复模式 默认的恢复模式,它会完整记录下操作数据库的每一个步骤, ...

  7. Linux下的CPU使用率与服务器负载的关系与区别

    原文链接:http://blogread.cn/it/article/7444 当我们使用top命令查看系统的资源使用情况时会看到load average,如下图所示,它表示系统在1,5,15分钟的平 ...

  8. js中浮点型运算 注意点

    先看张图: 这是一个JS浮点数运算Bug,导致我树状图,数据合计不正确,,,,,,两个小数相加,出来那么多位小数 (这是修该之后的) 网上找到以下解决方式: 方法一:有js自定义函数   <sc ...

  9. VMware复制Centos6虚拟机要改的地方

    1.删除文件 /etc/udev/rules.d/70-persistent-net.rules  (它会绑定你网卡信息) 2.重新配置 # vi /etc/sysconfig/network-scr ...

  10. oracle数据库读取操作系统的物理文件-转载,待完善

    --源地址不详 --创建目录SQL> create directory dir_xls as '/home/oracle'; Directory created. --给用户授权SQL> ...