2 条题解

  • 0

    #include<iostream>
    #include<algorithm>

    using namespace std;
    const int Maxn = 1e4+5;
    bool data[Maxn][Maxn];
    int tmp[Maxn][Maxn];
    int l[Maxn][Maxn],r[Maxn][Maxn];
    int n,m;
    int num1=0,num2=0;
    int maxn=0;
    void isLand();

    int main()
    {
    cin>>n>>m;
    for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
    cin>>data[i][j];
    isLand();
    cout<<maxn<<endl;
    return 0;
    }
    void isLand()
    {
    for(int i=0;i<n;i++)
    {
    num1=-1,num2=m;
    for(int j=0;j<m;j++)
    {
    if(!data[i][j])
    {
    tmp[i][j]=0;
    l[i][j]=0;
    num1=j;
    }
    else
    {
    if(i==0)
    {
    tmp[i][j]=1;
    l[i][j]=num1+1;
    }
    else
    {
    tmp[i][j]=tmp[i-1][j]+1;
    l[i][j]=max(num1+1,l[i-1][j]);
    }
    }
    }
    for(int j=m-1;j>=0;j--)
    {
    if(!data[i][j])
    {
    r[i][j]=m;
    num2=j;
    }
    else
    {
    if(i==0)
    r[i][j]=num2-1;
    else
    r[i][j]=min(num2-1,r[i-1][j]);
    }
    maxn=max(maxn,tmp[i][j]*(r[i][j]-l[i][j]+1));
    }
    }
    }

    • @ 2021-03-26 21:08:24

      还抄?您怎么敢的?
      知道动规是什么吗?
      抄就算了,代码都不改,您是不是看不起我?

  • 0
    @ 2021-02-08 15:02:46

    动态规划awa
    老师出的题还得学生来AC
    code:
    #include<iostream>
    #include<algorithm>

    using namespace std;
    const int Maxn = 1e4+5;
    bool data[Maxn][Maxn];
    int tmp[Maxn][Maxn];
    int l[Maxn][Maxn],r[Maxn][Maxn];
    int n,m;
    int num1=0,num2=0;
    int maxn=0;
    void isLand();

    int main()
    {
    cin>>n>>m;
    for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
    cin>>data[i][j];
    isLand();
    cout<<maxn<<endl;
    return 0;
    }
    void isLand()
    {
    for(int i=0;i<n;i++)
    {
    num1=-1,num2=m;
    for(int j=0;j<m;j++)
    {
    if(!data[i][j])
    {
    tmp[i][j]=0;
    l[i][j]=0;
    num1=j;
    }
    else
    {
    if(i==0)
    {
    tmp[i][j]=1;
    l[i][j]=num1+1;
    }
    else
    {
    tmp[i][j]=tmp[i-1][j]+1;
    l[i][j]=max(num1+1,l[i-1][j]);
    }
    }
    }
    for(int j=m-1;j>=0;j--)
    {
    if(!data[i][j])
    {
    r[i][j]=m;
    num2=j;
    }
    else
    {
    if(i==0)
    r[i][j]=num2-1;
    else
    r[i][j]=min(num2-1,r[i-1][j]);
    }
    maxn=max(maxn,tmp[i][j]*(r[i][j]-l[i][j]+1));
    }
    }
    }

  • 1

信息

难度
7
分类
(无)
标签
(无)
递交数
36
已通过
8
通过率
22%
被复制
5
上传者