【BZOJ1941】【SDOI2010】Hide and Seek、KDTree【数组版】 模板、

直接贴代码。

推荐一篇KDT讲解、http://blog.csdn.net/wyfcyx_forever/article/details/40182345

#include 
#include 
#include 
#include 
#include 
#define N 501000
#define inf 0x3f3f3f3f
#define d(x,y) (((x)>(y))?((x)-(y)):((y)-(x)))
using namespace std;

int n,ans=inf;

int judge;
struct Point
{
	int x,y;
	Point(int _x=0,int _y=0):x(_x),y(_y){}
	bool operator < (const Point &a)const
	{return judge?y>1,t=0;
		judge=jd;
		nth_element(P+l,P+mid,P+r+1);
		if(lDis[1];
		if(son[f][t]&&Dis[t]Maxdis)querymax(son[f][t],p);
	}
	int query(int root,int q)
	{
		Mindis=inf,Maxdis=0;
		querymax(root,P[q]),querymin(root,P[q]);
//		printf("(%d,%d) : %d %d\n",P[q].x,P[q].y,Mindis,Maxdis);
		return Maxdis-Mindis;
	}
}kdt;
int main()
{
//	freopen("test.in","r",stdin);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d%d",&P[i].x,&P[i].y);
	int root=kdt.build(1,n);
	for(int i=1;i<=n;i++)ans=min(ans,kdt.query(root,i));
	printf("%d\n",ans);
	return 0;
}


你可能感兴趣的:(模板,KDT)