社区讨论
50pts wa dp玄关
P1434[SHOI2002] 滑雪参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhizviab
- 此快照首次捕获于
- 2025/11/03 18:25 4 个月前
- 此快照最后确认于
- 2025/11/03 18:25 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,ma;
int a[105][105];
struct asd{
int x;
int y;
int dp;
}f[100005];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int t=1;t<=m;t++){
cin>>a[i][t];
f[a[i][t]].x=i;
f[a[i][t]].y=t;
f[a[i][t]].dp=1;
}
for(int i=1;i<=n*m;i++){
if(a[f[i].x+1][f[i].y]<i&&f[i].x+1<=n)f[i].dp=max(f[i].dp,f[a[f[i].x+1][f[i].y]].dp+1);
if(a[f[i].x-1][f[i].y]<i&&f[i].x-1>=1)f[i].dp=max(f[i].dp,f[a[f[i].x-1][f[i].y]].dp+1);
if(a[f[i].x][f[i].y+1]<i&&f[i].y+1<=m)f[i].dp=max(f[i].dp,f[a[f[i].x][f[i].y+1]].dp+1);
if(a[f[i].x][f[i].y-1]<i&&f[i].y-1>=1)f[i].dp=max(f[i].dp,f[a[f[i].x][f[i].y-1]].dp+1);
ma=max(ma,f[i].dp);
}
cout<<ma;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...