题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2739

分治处理决策单调性的思想就是先找到一个询问,枚举所有可能的转移找到它的决策点,那么这个询问之前的询问的决策点就是在该决策点之前(含)的,这个询问之后的询问的决策点就是在该决策点之后(含)的。

但是有那个“(含)”,所以复杂度可能被卡?

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return fx?ret:-ret;
}
ll Sqr(int a){return (ll)a*a;}
const int N=5e5+;
int n,x[N<<],y[N<<],ans[N];
bool cz(int bh,int u,int v)
{
if(u<bh||u>bh+n)return false;//u<bh!!! u>.. not u>=...
if(v<bh||v>bh+n)return true;
ll a=Sqr(x[u]-x[bh])+Sqr(y[u]-y[bh]);
ll b=Sqr(x[v]-x[bh])+Sqr(y[v]-y[bh]);
return a>b;
}
void solve(int l,int r,int L,int R)
{
if(l>r)return; int mid=l+r>>,ret=L;
for(int i=L+;i<=R;i++)if(cz(mid,i,ret))ret=i;
ans[mid]=ret;
solve(l,mid-,L,ret); solve(mid+,r,ret,R);
}
int main()
{
int T=rdn();
while(T--)
{
n=rdn();
for(int i=;i<=n;i++)
x[i]=x[i+n]=rdn(), y[i]=y[i+n]=rdn();
solve(,n,,n<<);
for(int i=;i<=n;i++)printf("%d\n",ans[i]>n?ans[i]-n:ans[i]);
}
return ;
}

bzoj 2739 最远点——分治处理决策单调性的更多相关文章

  1. [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性)

    [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性) 题面 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中,注意一行中可以放的句子数目是没有限制的.小 G ...

  2. [CF1101F]Trucks and Cities:分治优化决策单调性

    分析 好像是有一个叫这个名字的算法,链接. 令\(f[i][j][k]\)表示一辆每公里耗油量为\(1\)的货车从\(i\)到\(j\)中途加\(k\)次油最小的油箱容量.枚举所有的起点和中途加油的次 ...

  3. bzoj 2739 最远点

    Description 给你一个N个点的凸多边形,求离每一个点最远的点. Input 本题有多组数据,第一行一个数T,表示数据组数. 每组数据第一行一个数N,表示凸多边形点的个数,接下来N对数,依次表 ...

  4. 【BZOJ 1563】 (四边形优化、决策单调性)

    1563: [NOI2009]诗人小G Time Limit: 100 Sec  Memory Limit: 64 MBSubmit: 2611  Solved: 840 Description In ...

  5. CF868F Yet Another Minimization Problem 分治决策单调性优化DP

    题意: 给定一个序列,你要将其分为k段,总的代价为每段的权值之和,求最小代价. 定义一段序列的权值为$\sum_{i = 1}^{n}{\binom{cnt_{i}}{2}}$,其中$cnt_{i}$ ...

  6. 【洛谷3515】[POI2011] Lightning Conductor(决策单调性)

    点此看题面 大致题意: 给你一个序列,对于每个\(i\)求最小的自然数\(p\)使得对于任意\(j\)满足\(a_j\le a_i+p-\sqrt{|i-j|}\). 证明单调性 考虑到\(\sqrt ...

  7. CF868F Yet Another Minimization Problem(决策单调性)

    题目描述:给定一个序列,要把它分成k个子序列.每个子序列的费用是其中相同元素的对数.求所有子序列的费用之和的最小值. 输入格式:第一行输入n(序列长度)和k(需分子序列段数).下一行有n个数,序列的每 ...

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

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

  9. [BZOJ2739]最远点(DP+分治+决策单调性)

    根据旋转卡壳,当逆时针遍历点时,相应的最远点也逆时针转动,满足决策单调性.于是倍长成链,分治优化DP即可,复杂度O(n^2). #include<cstdio> #include<a ...

随机推荐

  1. oracle概要文件profile详解

    一.目的: Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该prof ...

  2. python3 自学第一天,python 介绍

    1.python的介绍: 是一个无聊的人创造的 2.python的格式: 跟java这些语言格式不一样用的是缩进来编码(区块) 一般是四个空格,这样更简洁 3.编码格式: python3跟python ...

  3. The databse returned no natively generated identity value问题

    com.cqupt.dayday.model 代码 package com.cqupt.dayday.model; import java.util.Date; /** * Created by I ...

  4. 【Python】etree方法生成,解析xml

    #练习:另一种遍历xml文件的方式etree,xpathimport systry: import xml.etree.cElementTree as ET #前面带c的都是比较快的,效率高且不占内存 ...

  5. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  6. Python中的分支结构和循环结构

    一.分支结构 语法: if  条件  :     .... else :    .... 例子: num = int(input("输入一个整数:")) if num<=10 ...

  7. [LeetCode&Python] Problem 690. Employee Importance

    You are given a data structure of employee information, which includes the employee's unique id, his ...

  8. wireshark显示过滤器的几种用法(转自他人博客)

    本文章转自:http://blog.51cto.com/houm01/1872652 几种条件操作符 ==   eq    等于    ip.addr == 192.168.0.1   ip.addr ...

  9. 行级锁 java||数据库

    http://www.cnblogs.com/xiyubaby/p/4623516.html select * from t for update 会等待行锁释放之后,返回查询结果. select * ...

  10. day08 MapReduce

    PS: HDFS对于MapReduce来说,HDFS就是一个就是一个客户端. PS: 离线就是 写sql,sparkh还是写sql 1. MAPREDUCE原理篇(1) Mapreduce是一个分布式 ...