蒟蒻的求救
  • 板块P1661 扩散
  • 楼主_youdu666_
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/1/25 15:28
  • 上次更新2023/10/28 11:00:41
查看原帖
蒟蒻的求救
329698
_youdu666_楼主2022/1/25 15:28

RT,我用曼哈顿距离做的

#include<bits/stdc++.h>
using namespace std;
int x[51],y[51],xa,ya,l,r,mid,n,i,sa,sc,j;
bool k[51],kb[51];
int main()
{
	cin>>n;
	for(i=1;i<=n;i++)
	cin>>x[i]>>y[i];
	l=1,r=2e9;
	while(l<=r)
	{
		mid=(l+r)>>1;
		for(i=1;i<=n;i++)
		k[i]=kb[i]=0;
		sa=sc=1;
		k[1]=kb[1]=1;
		for(i=1;i<=n;i++)
		for(j=i+1;j<=n;j++)
		{
			if((abs(x[i]-x[j])+abs(y[i]-y[j]))<=2*mid&&(k[i]==1||k[j]==1)&&!(k[i]==1&&k[j]==1))
				k[j]=k[i]=1,sa++;
			if((abs(x[i]-x[j])+abs(y[i]-y[j]))<=2*mid+2&&(kb[i]==1||kb[j]==1)&&!(kb[i]==1&&kb[j]==1))
				kb[i]=kb[j]=1,sc++;
		}
		if(sa==n&&sc<n)
		{
			cout<<mid;
			return 0;
		}
		if(sa==n) r=mid-1;
		else l=mid+1;
	//	cout<<mid<<" "<<sa<<" "<<sc<<endl;
	}
	cout<<l;
	return 0;
}
2022/1/25 15:28
加载中...