zoukankan      html  css  js  c++  java
  • [codevs1159]最大全0子矩阵(悬线法)

    解题关键:悬线法模板题。注意此模板用到了滚动数组。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cstdlib>
    #include<iostream>
    #include<cmath>
    #define maxn 2002
    using namespace std;
    typedef long long ll;
    int map[maxn][maxn],l[maxn],r[maxn],h[maxn];
    int n;
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>map[i][j];
        for(int i=1;i<=n;i++)l[i]=1,r[i]=n,h[i]=0;
        int ll,rr,ans=0;
        for(int i=1;i<=n;i++){
            ll=0,rr=n+1;
            for(int j=1;j<=n;j++){
                if(map[i][j])h[j]=0,l[j]=1,ll=j;
                else h[j]++,l[j]=max(l[j],ll+1);
            }
            for(int j=n;j>=1;j--){
                if(map[i][j])r[j]=n,rr=j;//不要重复++与赋值
                else r[j]=min(r[j],rr-1),ans=max(ans,h[j]*(r[j]-l[j]+1));
            }
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    【KMP】Period
    【KMP】Cyclic Nacklace
    【KMP】Oulipo
    【KMP】Number Sequence
    二分
    Stock 贪心经典 Zoj2921
    D. Block Tower
    烦人的dp
    搜索
    hdu 一个人的旅行
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/10360783.html
Copyright © 2011-2022 走看看