Description

  给你一个N个点的凸多边形,求离每一个点最远的点。

Input

  本题有多组数据,第一行一个数T,表示数据组数。
  每组数据第一行一个数N,表示凸多边形点的个数,接下来N对数,依次表示1~N这N个点的坐标,按照逆时针给出。

Output

  对于每组数据输出N个数,第i个数表示离第i个点最远的点的编号,如果有多个最远点,输出编号最小的。

将点倍长,若点j在点i的[i,i+n]内,w[i,j]=dis[i,j],否则w[i,j]=-dis[i,j];

最优决策满足单调性,分治;

#include<bits/stdc++.h>
#define ll long long
#define inf 0x7fffffff
using namespace std;
inline int read(){
int s=,f=;char ch=getchar();
for(;ch<''||ch>'';ch=getchar())if(ch=='-')f=-;
for(;ch>=''&&ch<='';ch=getchar())s=s*+ch-'';
return s*f;
}
inline void print(int x){
if(!x)return;
print(x/);
putchar(x%+'');
}
int ans[];
struct node{int x,y,id;}a[];
int n;
ll sqr(ll x){return x*x;}
bool cmp(int i,int j,int k){
ll x=sqr(a[i].x-a[j].x)+sqr(a[i].y-a[j].y);
ll y=sqr(a[i].x-a[k].x)+sqr(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].id>a[k].id:x<y;
}
void solve(int L,int R,int l,int r){
int mid=(L+R)>>;int k=l;
for(int i=l+;i<=r;++i)if(cmp(mid,k,i))k=i;
ans[mid]=a[k].id;
if(L<mid)solve(L,mid-,l,k);
if(R>mid)solve(mid+,R,k,r);
}
int main(){
int T;T=read();
for(;T;--T){
n=read();
for(int i=;i<=n;++i)a[i].x=read(),a[i].y=read(),a[i].id=i,a[i+n]=a[i];
solve(,n,,n+n);
for(int i=;i<=n;++i)
print(ans[i]),puts("");
}return ;
}

bzoj 2739 最远点的更多相关文章

  1. bzoj 2739 最远点——分治处理决策单调性

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2739 分治处理决策单调性的思想就是先找到一个询问,枚举所有可能的转移找到它的决策点,那么这个 ...

  2. BZOJ - 4520 K远点对

    题意:已知平面内 N 个点的坐标,求欧氏距离下的第 K 远点对 维护大小为2k最小堆,KD树的估值用前面提到的做法 PS.网上有人估价是使用边界四个点的最值来独立枚举,然而这样写似乎过不了 #incl ...

  3. BZOJ - 1941 最远估价

    题意:求给出的所有点的最远点减最近点的最小差值 KD树的最远估价和最近估价略微不同,直接找最远垂线,反正xjb改一下就过了 #include<bits/stdc++.h> #define ...

  4. BZOJ2739 最远点(分治 + 决策单调性)

    2739: 最远点 Time Limit: 20 Sec Memory Limit: 256 MB Description 给你一个N个点的凸多边形,求离每一个点最远的点. Input 本题有多组数据 ...

  5. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  6. BZOJ 4520: [Cqoi2016]K远点对

    4520: [Cqoi2016]K远点对 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 638  Solved: 340[Submit][Status ...

  7. BZOJ 4520 [Cqoi2016]K远点对(KD树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4520 [题目大意] 求K远点对距离 [题解] 修改估价函数为欧式上界估价,对每个点进行 ...

  8. BZOJ 4520: [Cqoi2016]K远点对(k-d tree)

    Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 1162  Solved: 618[Submit][Status][Discuss] Descripti ...

  9. BZOJ 4520: [Cqoi2016]K远点对 KDtree + 估价函数 + 堆

    Code: #include<bits/stdc++.h> #define ll long long #define maxn 200000 #define inf 10000000000 ...

随机推荐

  1. Navicat Premium连接Oracle 问题汇总

  2. XStream xml 解析框架使用笔记

    1. xml的标签可以映射为类.类成员变量 2. 有子标签的标签映射为类,没有子标签的便签映射为类成员变量 3. 类名.类成员变量名如与标签名不一致需要通过注解或代码设置别名 // 类名 @XStre ...

  3. __clone()方法和传址区别

    示例: <?php class Computer{ public $name = '联想'; public function _run(){ return '运行中'; } } $comp1 = ...

  4. Golang 语法学习笔记

    Golang 语法学习笔记 包.变量和函数. 包 每个 Go 程序都是由包组成的. 程序运行的入口是包 main. 包名与导入路径的最后一个目录一致."math/rand" 包由 ...

  5. 【React】组件生命周期

    初始化阶段 getDefaultPropos:只调用一次,实力之间共享引用 getInitialState:初始化每个实例特有的状态 componentWillMount:render之前最后一次修改 ...

  6. RSA算法学习

    package com.test.rsa; /* * 为了选择公钥和私钥,Bob必须执行如下步骤: * 1)选择两个大素数p和q.那么p和q应该多大呢?该值越大,RSA越难于破解,但是执行加密和解密所 ...

  7. CozyRSS开发记录10-RSS源管理

    CozyRSS开发记录10-RSS源管理 1.RSS源树结构 做解析体力活很多,把RSS解析的优化先放放,先玩一玩RSS源的管理. 虽然在初步的设计中,RSS源是以一个列表的方式来展示,但是,我觉得如 ...

  8. spring-data-redis 用法

  9. 关于UnsupportedClassVersionError的错误处理

    错误:Java.lang.UnsupportedClassVersionError: Bad version number in .class file 造成这种错误的原因是你的支持Tomcat运行的 ...

  10. unity 改变场景

    public class GameManager : MonoBehaviour { public void OnStartGame(int sceneName) { SceneManager.Loa ...