80pts求调
查看原帖
80pts求调
1359141
mo_mo_yu0_0楼主2024/10/23 22:31
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,k,f[510][510],x[510],y[510],ans;
bool cant(ll p1,ll p2){return x[p1]>x[p2]||y[p1]>y[p2];}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++)cin>>x[i]>>y[i];
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			if(x[i]>x[j]||x[i]==x[j]&&y[i]>y[j]){
				swap(x[i],x[j]);
				swap(y[i],y[j]);
			}
		}
	}
	ans=k+1;
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			if(cant(i,j))continue;
			f[i][j]=x[j]-x[i]+y[j]-y[i]-2;
			for(int l=1;l<=n;l++){
				if(l==i||l==j||cant(i,l)||cant(l,j))continue;
				f[i][j]=min(f[i][j],f[i][l]-1+y[j]+x[j]-y[l]-x[l]);
				cout<<x[i]<<' '<<y[i]<<" "<<x[l]<<' '<<y[l]<<" "<<x[j]<<' '<<y[j]<<" "<<f[i][j]<<endl;
			}
			if(f[i][j]<=k)ans=max(ans,y[j]+x[j]-x[i]-y[i]+k-f[i][j]);
		}
	}
	cout<<ans;
}
2024/10/23 22:31
加载中...