求助CSP-JT4
查看原帖
求助CSP-JT4
684254
Rain_chr楼主2023/2/24 18:51
#include<bits/stdc++.h>
using namespace std;
struct node
{
	int x,y;
}a[510];
bool cmp(node x,node y)
{
	if(x.x==y.x)
		return x.y<y.y;
	return x.x<y.x;
}
int dp[510][110];//当前在i且用了k个点 
int dist(int x,int y)
{
	return abs(a[x].x-a[y].x)+abs(a[x].y-a[y].y); 
}
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+1+n,cmp);
	memset(dp,0xc0,sizeof(dp));
	for(int i=1;i<=n;i++)
		dp[i][0]=1;
	for(int i=1;i<=n;i++)//当前的位置 
	{
		for(int j=1;j<i;j++)//转移的位置 
			for(int k=dist(i,j)-1;k<=m;k++) //已经用的点 
				dp[i][k]=max(dp[i][k],dp[j][k-dist(i,j)+1]+dist(i,j));
	}
//	cout<<endl;
//	for(int i=1;i<=n;i++)
//		cout<<a[i].x<<' '<<a[i].y<<endl;
//	for(int i=0;i<=n;i++)
//		for(int j=0;j<=m;j++)
//			if(dp[i][j]>=0)
//				cout<<i<<' '<<j<<" "<<dp[i][j]<<endl;
	int ans=0;
	for(int i=1;i<=n;i++)
		for(int j=0;j<=m;j++)
			ans=max(ans,dp[i][j]+m-j);
	cout<<ans;
	return 0;
} 
2023/2/24 18:51
加载中...