80分求助!
查看原帖
80分求助!
574215
OneLeft楼主2022/8/1 08:24
#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#

2022/8/1 08:24
加载中...