BZOJ2739 : 最远点

把环倍长,设$w(i,j)$表示对于$i$,决策$j$的价值,如果$j$在$[i,i+n]$,那么$w(i,j)=dis(i,j)$,否则$w(i,j)=-dis(i,j)$。

则$w$满足四边形不等式,最优决策满足完全单调性,分治求解即可。

时间复杂度$O(n\log n)$。

#include<cstdio>
#define N 500010
int T,n,i,f[N];struct P{int x,y,p;}a[N<<1];
inline void read(int&a){
  char c;bool f=0;a=0;
  while(!((((c=getchar())>=‘0‘)&&(c<=‘9‘))||(c==‘-‘)));
  if(c!=‘-‘)a=c-‘0‘;else f=1;
  while(((c=getchar())>=‘0‘)&&(c<=‘9‘))(a*=10)+=c-‘0‘;
  if(f)a=-a;
}
inline bool cmp(int i,int j,int k){
  long long x=1LL*(a[i].x-a[j].x)*(a[i].x-a[j].x)+1LL*(a[i].y-a[j].y)*(a[i].y-a[j].y),
            y=1LL*(a[i].x-a[k].x)*(a[i].x-a[k].x)+1LL*(a[i].y-a[k].y)*(a[i].y-a[k].y);
  if(j<i||j>i+n)x=-x;
  if(k<i||k>i+n)y=-y;
  return x==y?a[j].p>a[k].p:x<y;
}
void solve(int l,int r,int dl,int dr){
  int mid=(l+r)>>1,dm=dl;
  for(int i=dl+1;i<=dr;i++)if(cmp(mid,dm,i))dm=i;
  f[mid]=a[dm].p;
  if(l<mid)solve(l,mid-1,dl,dm);
  if(r>mid)solve(mid+1,r,dm,dr);
}
int main(){
  read(T);
  while(T--){
    read(n);
    for(i=1;i<=n;i++)read(a[i].x),read(a[i].y),a[i].p=i,a[n+i]=a[i];
    solve(1,n,1,n+n);
    for(i=1;i<=n;i++)printf("%d\n",f[i]);
  }
  return 0;
}

  

时间: 2025-01-12 10:10:35

BZOJ2739 : 最远点的相关文章

linux vncserver 远控

在Linux上启动VNC Server(如果没安装的话那就先安装) 执行vncserver命令: [[email protected] root]# vncserver You will require a password to access your desktops. Password: ----为了不想任何人都可以任意遥控此计算机.因此当第 Verify: ---1次启动VNC server时,会要求设置网络遥控的密码. 这样后就设置了密码,再运行vncserver 记住这个1,下面会用

你相信吗:无线供电其实离我们已经不远了

无线供电是一种方便安全的新技术,无需任何物理上的连接,电能就可以近距离无接触地传输给负载.虽然直到现在无线供电在许多人眼里还是一个新兴事物,但是早在一百多年前就有科学家注意到这项技术了.而且更让人惊喜和难以置信的是无线供电离我们已经不远了. 电感耦合无线充电 最常见的无线充电方式是使用电感耦合(通常是一个特定的子集称为"谐振电感耦合")技术.这种状态的电流变化是根据法拉第电磁感应定律产生感应电动势,如果你有一个电动牙刷.电动剃须刀或助听器,当你把它们插向插座时,你就见证了电感耦合的发生

我们离人工智能有多远?

自从人工智能被提出之日起,已经过去了半个世纪,至今也没有达到人们期待的水准.也许,真正的人工智能永远也不会实现. 最近在研究图像检索时突然想到这个问题,在这里写下一些自己的思考. 人们最终所期望实现的人工智能应该是与人类具有一样的智慧或者超越人类的智慧,我们可以称之为智慧生命.但是智慧生命真的能够实现吗? 人工智能学科大致分为两派,一派是推理派,另一派是学习派. 推理派认为智慧生命应该像人一样能够进行推理,所以我们应该对计算机设计一套推理的程序,以此来实现智慧生命.但是人类在一些事情的处理上难道

20145225唐振远《网络对抗》 Web安全基础实践

20145225唐振远<网络对抗>Web安全基础实践 参考博客:20145215 卢肖明 基础问题回答 (1)SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 防御:利用输入规则限制进行防御,过滤输入的数据,不允许特殊字符输入. (2)XSS攻击的原理,如何防御? 跨站脚本攻击,允许恶意用户将恶意Script代码注入到网页上,当用户浏览网页时,嵌入其中Web里面的Script代码

勒索病毒,距离我们还有多远?

上周五,一个名为WNCRYPT"永恒之蓝"的勒索病毒悄然爆发,并在短短时间内迅速感染了超过150个国家和地区的计算机系统. 中国领域也并不例外--在微博等社交网络上,全国多地公共服务机构.机关单位等地方被病毒感染而临时中止对外办公业务的消息不断曝出. 该勒索病毒出现之时,360等国内安全厂商也在紧急行动,经过72小时的连续作战后遏止了勒索病毒的传播趋势,360安全卫士用户没有受到此次病毒攻击的危害. 放眼互联网安全领域,此次在全球范围内爆发的WNCRYPT"永恒之蓝"

《三联生活周刊》2017年17期:3星。电子版阅读体验远超纸版。如果雄安的土地制度实验成功了,“北上广深”的房价也就被釜底抽薪了。

家附近的报刊亭都被拆了,被迫看电子版三联.发现阅读体验远超纸版.主要有以下两个方面的好处:1:看图片的体验,电子版好过纸版.当然前提是在电脑上或平板上看,kindle是黑白的,看图片效果比较查:2:可以做笔记,笔记可以永久保存:3:检索方便. 目前电子版的缺陷是滞后两期,导致时效性太差,只能当作纸版的长尾. 本期雄安的几篇文章比较有深度.总体评价3星. 以下是本期中一些重要的信息的摘抄: 1:研究人员调查分析了美国11个城市10年中举办马拉松赛事前后心脏病患者的死亡率后发现,那些在赛事举办时发生

还差得远呢

这几天想了很多,来杭半年了各种技术也学习了很多,茫茫然地跟着大潮到底会去到何方,自己对于这一行的热情究竟能维持到几时. 生存的压力越来越大,在这压力之下,焦虑和不甘越来越强烈. 有时不是我们选择这样,而是我们只能如此选择. 最近几天,对自己这一段日子进行反思,深觉自己还差得远. 无论是自律,还是坚持,或者说热情?技术.经验.更谈不上积累. 满瓶不动半瓶晃悠. 既然喜欢,就咬牙成为最好的. 其它的不管,至少在自己喜欢的这件事上,要做最好的!

51 nod 1766 树上的最远点对(线段树+lca)

1766 树上的最远点对 基准时间限制:3 秒 空间限制:524288 KB 分值: 80 难度:5级算法题 n个点被n-1条边连接成了一颗树,给出a~b和c~d两个区间,表示点的标号请你求出两个区间内各选一点之间的最大距离,即你需要求出max{dis(i,j) |a<=i<=b,c<=j<=d} (PS 建议使用读入优化) Input 第一行一个数字 n n<=100000. 第二行到第n行每行三个数字描述路的情况, x,y,z (1<=x,y<=n,1<

bzoj4520 [Cqoi2016]K远点对

Description 已知平面内 N 个点的坐标,求欧氏距离下的第 K 远点对. Input 输入文件第一行为用空格隔开的两个整数 N, K.接下来 N 行,每行两个整数 X,Y,表示一个点 的坐标.1 < =  N < =  100000, 1 < =  K < =  100, K < =  N*(N−1)/2 , 0 < =  X, Y < 2^31. Output 输出文件第一行为一个整数,表示第 K 远点对的距离的平方(一定是个整数). 将所有点建成kd