洛谷惊现灵异事件!!

P1434 [SHOI2002] 滑雪

cn_lemon @ 2017-07-13 11:30:59

/* 为什么会90分????

第九个点的第二个数字为0(标准输出10),我是8。。。。

鄙人实在看不出来,求大佬(帅哥)解答

*/

#include<iostream>
#include<cstdio>
using namespace std;
const int MAXN=100+10;
int a[MAXN][MAXN],w[MAXN][MAXN],ww[MAXN][MAXN];
int r,c,maxx,sum;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
void dfs(int x,int y,int k)
{
    int i,flag=0;
    if(ww[x][y])
    {
        //printf("*%d*\n",sum);
        sum=max(sum,k+ww[x][y]-1);
        //printf("*%d %d %d*\n",k,sum,ww[x][y]);
        return;
    }
    for(i=0;i<4;i++)
    {
        int x1=x+dx[i],y1=y+dy[i];
        if(a[x1][y1]>=a[x][y]||x1<=0||y1<=0||x1>r||y1>c)continue;
        flag=1;
        //printf("%d %d %d %d %d\n",x,y,sum,a[x][y],k);
        dfs(x1,y1,k+1);
        //printf("%d %d %d %d %d\n",x,y,sum,a[x][y],k);
        w[x][y]=max(w[x][y],sum-k+1);
    }
    if(flag==0)
    {
        sum=max(k,sum);
        w[x][y]=1;
    }
}
int main()
{
    scanf("%d%d",&r,&c);
    for(int i=1;i<=r;i++)
    for(int j=1;j<=c;j++)
    scanf("%d",&a[i][j]);
    for(int i=1;i<=r;i++)
    for(int j=1;j<=c;j++)
    if(!ww[i][j])
    {
        sum=0;
        dfs(i,j,1);
        maxx=max(sum,maxx);
        //printf("\n");
        for(int ii=1;ii<=r;ii++)
        for(int jj=1;jj<=c;jj++)
        if(ww[ii][jj]==0)
        ww[ii][jj]=w[ii][jj];
    }
    printf("%d",maxx);
    return 0;
}

by 昆仑龙鹫 @ 2017-07-13 11:31:37

TIANNA


by 你家root跑了 @ 2017-07-13 11:32:40

我也看不懂(ノ=Д=)ノ┻━┻P党掀桌


by WilliamPen @ 2017-07-13 12:20:04


by d3NtMDAw @ 2017-07-13 12:38:37

先%%%(日常%蛤1/1)

其次数据呢


by 老K @ 2017-07-13 12:51:57

@柠檬没我萌呐 你自己写错了为什么要说“洛谷惊现灵异事件”呢?这是在推锅吗?


by cn_lemon @ 2017-07-13 14:35:22

@罗恺 标题党表示这是一种艺术


by wabcy @ 2017-07-13 15:21:57

明天来震惊部上班(滑稽)


by 老K @ 2017-07-13 15:47:21

@柠檬没我萌呐 我不觉得,,我只觉得这是一种推锅。


by WilliamPen @ 2017-07-19 09:36:45

每次看到标题,就知道是你。。


by Lunch @ 2017-07-19 15:12:36

@罗恺 dddd


| 下一页