MLE 50pts 求调

P1434 [SHOI2002] 滑雪

Elairin176 @ 2022-12-12 21:13:30

#include <iostream>
using namespace std;
int r,c,a[101][101],mem[101][101],ans,dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
inline int max(int a,int b){
    return a>b?a:b;
}
int dfs(int x,int y){
    if(mem[x][y]){
        return mem[x][y];
    }
    int t=0;
    for(int i=0;i<4;i++){
        int xx=x+dx[i],yy=y+dy[i];
        if(xx<0||yy<0||xx>=r||yy>=c||a[xx][yy]>a[x][y]){
            t=max(t,1);
            continue;
        }
        if(mem[xx][yy]){
            t=max(t,1+mem[xx][yy]);
        }else{
            t=max(t,1+dfs(xx,yy));
        }
    }
    mem[x][y]=t;
    return t;
}
int main(void){
    scanf("%d%d",&r,&c);
    for(int i=0;i<r;i++){
        for(int j=0;j<c;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(int i=0;i<r;i++){
        for(int j=0;j<c;j++){
            if(mem[i][j]){
                ans=max(ans,mem[i][j]);
            }else{
                ans=max(ans,dfs(i,j));
            }
        }
    }
    printf("%d",ans);
}

by zxy123bc @ 2022-12-12 21:21:08

@destructor line14 a[xx][yy]>a[x][y] 改为 a[xx][yy]>=a[x][y]


by zxy123bc @ 2022-12-12 21:21:55

@destructor 卷啊


by Elairin176 @ 2022-12-12 21:27:29

@zxy123bc 过力,谢谢qwq


|