65求大佬指教
查看原帖
65求大佬指教
558045
wenkucg0楼主2023/10/10 14:01
#include<bits/stdc++.h>
using namespace std;
int n,k,f[505][505];
struct cspnb{
	int x,y;
}a[505];
bool cmp(cspnb qq,cspnb ww){
	if(qq.x	==ww.x)return qq.y<ww.y;
	return qq.x<ww.x ;
}
int get(int xa,int ya,int xb,int yb) 
{
	return max(xa-xb,xb-xa)+max(ya-yb,yb-ya)-1;
}
int main(){
	cin>>n>>k;
	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=0;j<=k;j++)f[i][j]=1+j;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<i;j++){
			int len=get(a[i].x,a[i].y,a[j].x,a[j].y);
			if(len>k)continue;
			for(int g=len;g<=k;g++)f[i][g]=max(f[i][g],f[j][g-len]+len+1);
			
		}
		
	}
	int ans=-1;
	for(int i=1;i<=n;i++){
		ans=max(f[i][k],ans);
	}
	cout<<ans-1;
}
2023/10/10 14:01
加载中...