70分求调
查看原帖
70分求调
1159939
pengwentao楼主2025/8/1 19:49
#include<bits/stdc++.h>
using namespace std;
struct node{
	int x,y;
}a[1005];
bool cmp(node x,node y)
{
	if(x.x<y.x)
	{
		return 1;
	}
	else if(x.x>y.x)
	{
		return 0;
	}
	else
	{
		return x.y<=y.y;
	}
	
}
int s[1005][1005],d[1005][1005];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].x>>a[i].y;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++)
	{
		for(int j=i;j<=n;j++)
		{
			int f=0;
			for(int k=i;k<=j-1;k++)
			{
				if(a[j].x>=a[k].x&&a[j].y>=a[k].y)
					f=max(f,s[i][k]+1);
			}
			if(i==j)
			{
				s[i][j]=1;
				continue;
			}
			else
				s[i][j]=f;
		}
	}
	int maxn=-1e9,q,w;
	for(int i=1;i<=n;i++)
	{
		for(int j=i;j<=n;j++)
		{
			if(abs(a[j].x-a[i].x)+abs(a[j].y-a[i].y)+1-s[i][j]<=m&&a[i].x-a[j].x<=0&&a[i].y-a[j].y<=0)
			{
				maxn=max({maxn,abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y)+1,s[i][j]+m}); 
			}
		}
	}
	cout<<maxn;
	return 0;
}
2025/8/1 19:49
加载中...