80分求助!

P1434 [SHOI2002] 滑雪

stswkl @ 2022-08-01 08:24:36

#include<bits/stdc++.h>
using namespace std;
struct node
{
    long long A,X,Y;
};
node a[10005];
long long n,m,b[105][105],dp[105][105],da,x,y;
bool cmp(node x,node y)
{
    return x.A>y.A;
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    {
        cin>>b[i][j];
        a[(i-1)*n+j].A=b[i][j];
        a[(i-1)*n+j].X=i;
        a[(i-1)*n+j].Y=j;
    }
    sort(a+1,a+n*m+1,cmp);
    for(int i=1;i<=n*m;i++)
    {
        x=a[i].X;y=a[i].Y;
        da=dp[x][y];
        if(b[x-1][y]>b[x][y])da=max(da,dp[x-1][y]);
        if(b[x+1][y]>b[x][y])da=max(da,dp[x+1][y]);
        if(b[x][y-1]>b[x][y])da=max(da,dp[x][y-1]);
        if(b[x][y+1]>b[x][y])da=max(da,dp[x][y+1]);
        dp[x][y]=da+1;
    }
    da=0;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
        da=max(da,dp[i][j]);
    cout<<da;

    return 0;
}

WA 1# 2#


by furbzy @ 2022-08-05 19:05:10

hank:

输入:

4 2

0 1

3 2

3 3

4 4

输出:5


|