• 【BZOJ2739】最远点(决策单调性)


    点此看题面

    • 给定一个(n)个点的凸多边形,求到每个点距离最远的点。
    • (nle5 imes10^5)

    决策单调性

    我们直接把所有点给复制一份,就可以断环为链了。

    考虑每个(iin[n+1,2n])的答案,它的合法决策区间是([i-n+1,i-1])

    这样一来,显然具有决策单调性。

    直接分治求解即可。

    代码:(O(nlogn))

    #include<bits/stdc++.h>
    #define Tp template<typename Ty>
    #define Ts template<typename Ty,typename... Ar>
    #define Reg register
    #define RI Reg int
    #define Con const
    #define CI Con int&
    #define I inline
    #define W while
    #define N 500000
    using namespace std;
    int n;struct P {int x,y;}p[2*N+5];
    namespace FastIO
    {
    	#define FS 100000
    	#define tc() (FA==FB&&(FB=(FA=FI)+fread(FI,1,FS,stdin),FA==FB)?EOF:*FA++)
    	#define pc(c) (FC==FE&&(clear(),0),*FC++=c)
    	#define D isdigit(oc=tc())
    	int ff,OT;char oc,FI[FS],FO[FS],OS[FS],*FA=FI,*FB=FI,*FC=FO,*FE=FO+FS;
    	I void clear() {fwrite(FO,1,FC-FO,stdout),FC=FO;}
    	Tp I void read(Ty& x) {x=0,ff=1;W(!D) ff=oc^'-'?1:-1;W(x=(x<<3)+(x<<1)+(oc&15),D);x*=ff;}
    	Ts I void read(Ty& x,Ar&... y) {read(x),read(y...);}
    	Tp I void writeln(Ty x) {W(OS[++OT]=x%10+48,x/=10);W(OT) pc(OS[OT--]);pc('
    ');}
    }using namespace FastIO;
    int f[2*N+5];I void Solve(CI l,CI r,CI L,CI R)//分治决策单调性
    {
    	#define D(A,B) (1LL*(A.x-B.x)*(A.x-B.x)+1LL*(A.y-B.y)*(A.y-B.y))//距离
    	if(l>r) return;RI i,mid=l+r>>1,o=max(L,mid-n+1);//左端点向mid-n+1取max
    	for(i=o+1;i<=min(R,mid-1);++i) D(p[mid],p[i])>D(p[mid],p[o])&&(o=i);//右端点向mid-1取min
    	f[mid]=o,Solve(l,mid-1,L,o),Solve(mid+1,r,o,R);//分治
    }
    int main()
    {
    	RI Tt,i;read(Tt);W(Tt--)
    	{
    		for(read(n),i=1;i<=n;++i) read(p[i].x,p[i].y),p[n+i]=p[i];//断环为链
    		for(Solve(n+1,n<<1,1,n<<1),i=n+1;i<=(n<<1);++i) writeln(f[i]>n?f[i]-n:f[i]);//考虑每个i∈[n+1,2n]的答案
    	}return clear(),0;
    }
    
    败得义无反顾,弱得一无是处
  • 相关阅读:
    第七章 第一月:开始 第二周:链接建设(2)
    基础篇 第四节 项目进度计划编辑 之 日历
    VSS2005 使用说明
    删除存储过程
    基础篇 第四节 项目进度计划编辑 之 任务关联性设定
    转载: input 的css技巧
    js: js判断回车键
    一个简单邮件发送类
    转载: php发送邮件原理
    css 小经验: 重构css的优化与技巧
  • 原文地址:https://www.cnblogs.com/chenxiaoran666/p/BZOJ2739.html
Copyright © 2020-2023  润新知