zoukankan      html  css  js  c++  java
  • codeforces prblem 375 b

    题意:给出个只有0,1的矩阵,我们可以交换任意行,问最大的全1矩阵面积是多少

    思路:行的全1的段我们无法改变,所以得尽量把该列有1的这些行放在一起,然后根据能向左延伸多少全1格排序

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=5005;
     4 char s[N];
     5 int a[N][N];
     6 int dp[N][N];
     7 int b[N];
     8 bool cmp(int x,int y){
     9     return x>y;
    10 }
    11 int main(){
    12     int n,m;
    13     scanf("%d%d",&n,&m);
    14     for(int i=1;i<=n;i++){
    15         scanf("%s",s+1);
    16         for(int j=1;j<=m;j++) a[i][j]=s[j]-'0';
    17     }
    18 
    19     for(int i=1;i<=n;i++){
    20         for(int j=1;j<=m;j++){
    21             if(a[i][j]==1){
    22                 dp[j][i]+=dp[j-1][i]+1;
    23             }
    24         }
    25     }
    26     //dp[i][j]表示第i列第j行向左最多延长多少
    27     int Max=0;
    28     for(int i=1;i<=m;i++){
    29         for(int j=1;j<=n;j++){
    30             b[j]=dp[i][j];
    31 
    32         }
    33         sort(b+1,b+1+n);
    34         for(int k=n;k>=1;k--){
    35             if(b[k]==0) break;
    36             Max=max(Max,b[k]*(n-k+1));
    37         }
    38     }
    39     cout<<Max<<endl;
    40 }
    
  • 相关阅读:
    [leetCode]剑指 Offer 43. 1~n整数中1出现的次数
    [leetCode]剑指 Offer 42. 连续子数组的最大和
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    POJ
    POJ
  • 原文地址:https://www.cnblogs.com/hhxj/p/7250863.html
Copyright © 2011-2022 走看看