Floyd 30pts 求助
查看原帖
Floyd 30pts 求助
569235
w9095楼主2022/11/28 09:18
#include <bits/stdc++.h>
#define INF 999999999
using namespace std;
struct node
{
long long x,y;
}d[600];
long long n,k,e[600][200],p[600][600],ans=0,b,c;
bool cmp(struct node a,struct node b)
{
	return a.x<b.x;
}

int main()
{
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++)
	    scanf("%d%d",&d[i].x,&d[i].y);
	sort(d+1,d+n+1,cmp);
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
	        if(i==j)e[i][j]=0;
	        else e[i][j]=INF;
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
	        if((d[i].y<=d[j].y)&&(d[i].x<=d[j].x)&&i!=j)e[i][j]=d[j].x-d[i].x+d[j].y-d[i].y-1,p[i][j]=d[j].x-d[i].x+d[j].y-d[i].y-1;
	for(int k=1;k<=n;k++)
	    for(int i=1;i<=n;i++)
	        for(int j=1;j<=n;j++)
	            if(e[i][k]+e[k][j]<e[i][j])
	               e[i][j]=e[i][k]+e[k][j];
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
	        if(e[i][j]<=k&&p[i][j]+2>ans)ans=p[i][j]+2,b=i,c=j;
	printf("%d",ans+k-e[b][c]);
	return 0;
}

谢谢dalao了

提交记录

2022/11/28 09:18
加载中...