1 条题解

  • 0
    @ 2023-4-25 20:19:22
    #include <iostream>
    #include <iomanip>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <vector>
    #include <map>
    #include <algorithm>
    #include <queue>
    #include <stack>
    #include <cmath>
    #define inf 0x3f3f3f3f
    #define ll long long
    using namespace std;
    const int  maxn=1e5+10;
    int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
    int tu[600][600],n,m,vis[600][600];
    struct newt
    {
        int l,r;
    }dian[600][600];
    void dfs(int x,int y)
    {
        vis[x][y]=1;
        for(int i=0;i<4;i++)
        {
            int nx=x+dir[i][0],ny=y+dir[i][1];
            if(nx<1||ny<1||nx>n||ny>m)continue;
            if(tu[x][y]<=tu[nx][ny])continue;
            if(!vis[nx][ny])dfs(nx,ny);
            //printf("%d %d %d %d\n",x,y,nx,ny);
            dian[x][y].l=min(dian[x][y].l,dian[nx][ny].l);
            dian[x][y].r=max(dian[x][y].r,dian[nx][ny].r);
        }
    }
    bool cmp(newt a,newt b)
    {
        if(a.l!=b.l)return a.l<b.l;
        else return a.r>b.r;
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        scanf("%d",&tu[i][j]),dian[i][j].l=inf;
        for(int i=1;i<=m;i++)
        dian[n][i].l=i,dian[n][i].r=i;
        for(int j=1;j<=m;j++)
        if(!vis[1][j])dfs(1,j);
        int flag=0;
        for(int i=1;i<=m;i++)
        if(!vis[n][i])
        {
            flag++;
        }
        if(flag)
        {
            printf("0\n%d\n",flag);
        }
        else
        {
            int bj=1,sum=0;
            while(bj<=m)
            {
                int Max=0;
                for(int i=1;i<=m;i++)
                if(dian[1][i].l<=bj)
                Max=max(dian[1][i].r,Max);
                sum++;
                bj=Max+1;
            }
            printf("1\n%d\n",sum);
        }
        return 0;
    }
    
    • 1

    信息

    ID
    713
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    54
    已通过
    13
    上传者