【BZOJ4140】共点圆加强版(二进制分组)
【BZOJ4140】共点圆加强版(二进制分组)
题面
题解
我卡精度卡了一天。。。。
之前不强制在线的做法是\(CDQ\)分治,维护一个凸壳就好了。
现在改成二进制分组,每次重建凸壳就好了。。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
#define ll long long
#define MAX 500500
#define Sqr(x) ((x)*(x))
#define pb push_back
struct Node{double x,y;}a[MAX];
bool operator<(Node a,Node b){if(a.x==b.x)return a.y<b.y;return a.x<b.x;}
inline double Slope(Node a,Node b)
{
if(a.x==b.x)return a.y>b.y?1e18:-1e18;
return (a.y-b.y)/(a.x-b.x);
}
int n,ans,top;
struct Group
{
vector<Node> p,Q;
int tot,tp;
void insert(Node x){++tot;p.pb(x);}
void clear(){p.clear();Q.clear();tot=tp=0;}
void Build()
{
sort(p.begin(),p.end());
tp=1;Q.clear();Q.pb(p[0]);
for(int i=1;i<tot;++i)
{
while(tp>1&&Slope(Q[tp-1],Q[tp-2])-Slope(Q[tp-1],p[i])>=0)--tp,Q.pop_back();
Q.pb(p[i]),++tp;
}
}
bool Query(double x,double y)
{
double k=-x/y;int l=1,r=tp-1,ret=0;
while(l<=r)
{
int mid=(l+r)>>1;
if(k>=Slope(Q[mid],Q[mid-1]))l=mid+1,ret=mid;
else r=mid-1;
}
return 2*x*Q[ret].x+2*y*Q[ret].y>=x*x+y*y;
}
}B[50];
void insert(double x,double y)
{
B[++top].insert((Node){x,y});
while(top>1&&B[top].tot==B[top-1].tot)
{
for(int i=0;i<B[top].tot;++i)
B[top-1].insert(B[top].p[i]);
B[top--].clear();
}
B[top].Build();
}
bool Query(double x,double y)
{
if(!top)return false;
for(int i=1;i<=top;++i)
if(!B[i].Query(x,y))return false;
return true;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
int opt;double x,y;
scanf("%d%lf%lf",&opt,&x,&y);
x+=ans;y+=ans;
if(!opt)insert(x,y);
else if(Query(x,y))++ans,puts("Yes");else puts("No");
}
return 0;
}
【BZOJ4140】共点圆加强版(二进制分组)的更多相关文章
- BZOJ4140 : 共点圆加强版
假设当前询问点为$(A,B)$,那么它在一个以$(x,y)$为圆心的圆里需要满足: $(x-A)^2+(y-B)^2\leq x^2+y^2$ $2Ax+2By\geq A^2+B^2$ 等价于询问所 ...
- bzoj2961&&bzoj4140 共点圆
题目描述 在平面直角坐标系中,Wayne需要你完成n次操作,操作只有两种: 1.0 x y.表示在坐标系中加入一个以(x, y)为圆心且过原点的圆. 2.1 x y.表示询问点(x, y)是否在所有已 ...
- 【Codeforces710F】String Set Queries (强制在线)AC自动机 + 二进制分组
F. String Set Queries time limit per test:3 seconds memory limit per test:768 megabytes input:standa ...
- BZOJ2989 数列(二进制分组)
这题其实可以cdq分治做,但是如果强制在线的话,这里有个牛逼方法叫二进制分组. 它的基本思想是把修改操作按二进制分组,遇到修改就在尾部加一个,并与之前的合并,比如之前有23(16+4+2+1)个,加了 ...
- bzoj2961 共点圆 bzoj 4140
题解: 比较水的一道题 首先我们化简一下式子发现是维护xxo+yyo的最值 显然是用凸包来做 我们可以直接用支持插入删除的凸包 也是nlogn的 因为没有强制在线,我们也可以cdq,考虑前面一半对答案 ...
- 【BZOJ3821/UOJ46】玄学(二进制分组,线段树)
[BZOJ3821/UOJ46]玄学(二进制分组,线段树) 题面 BZOJ UOJ 题解 呜,很好的题目啊QwQ. 离线做法大概可以线段树分治,或者直接点记录左右两次操作时的结果,两个除一下就可以直接 ...
- bzoj2989&&4170数列——二进制分组+主席树
题意的转化挺巧妙的 可以联想到曼哈顿距离! 并且,所谓的修改还要查询历史版本,并且修改之间不动只算一次,不就是给平面上加一个点吗? 看成(x,a[x])的点 就是一个菱形区域 转切比雪夫距离,变成矩形 ...
- CodeForces - 710F:String Set Queries (二进制分组 处理 在线AC自动机)
ou should process m queries over a set D of strings. Each query is one of three kinds: Add a string ...
- 2019.01.21 bzoj2989: 数列(二进制分组+主席树)
传送门 二进制分组入门题. 主席树写错调题2h+2h+2h+体验极差. 题意简述:给一堆点,支持加入一个点,询问有多少个点跟(x,y)(x,y)(x,y)曼哈顿距离不超过kkk. 思路:题目要求的是对 ...
随机推荐
- Revit开发-设置对象样式
最近需要读取RVT项目样板一些对象样式,翻了一下API,查找到下面的情况:
- 在linux环境下为eclipse配置jdk以及Tomcat服务(附图解详细步骤)
环境:jdk8,Tomcat7,eclipse 需要先在linux上安装好对应的软件及java环境,如果还没有安装的,可以先去看我之前写的两篇博客:ubuntu/linux中安装Tomcat(附图解详 ...
- 我的第一个上线小程序,案例实战篇二——LayaAir游戏开始界面开发
不知不觉我的第一个小程序已经上线一周了,uv也稳定的上升着. 很多人说我的小程序没啥用,我默默一笑,心里说:“它一直敦促我学习,敦促我进步”.我的以一个小程序初衷是经验分享,目前先把经验分享到博客园, ...
- Netty源码分析第5章(ByteBuf)---->第9节: ByteBuf回收
Netty源码分析第五章: ByteBuf 第九节: ByteBuf回收 之前的章节我们提到过, 堆外内存是不受jvm垃圾回收机制控制的, 所以我们分配一块堆外内存进行ByteBuf操作时, 使用完毕 ...
- yocto-sumo源码解析(十): ProcessServer.idle_commands
这一节开始介绍ProcessServer.idle_commands,前面我们知道ProcessServer.main就是不停调用idle_commands()以获取可用的套接字描述符或者是文件描述符 ...
- Linux加密到K8S中
文件名字 test.conf 加密: base64 --wrap=0 aaa.conf 把得到的密钥填入配置文件当中即可
- 2019第十届蓝桥杯 E题 迷宫
/*输入 30 50 01010101001011001001010110010110100100001000101010 00001000100000101010010000100000001001 ...
- UIWebView控件中 字体大小和字体样式的修改
修改UIWebView控件中字体的样式: NSString *htmlString = [NSString stringWithContentsOfFile:self.webPath encoding ...
- tac命令详解
基础命令学习目录首页 原文链接:http://blog.chinaunix.net/uid-128922-id-289974.html 有许多命令都可以查看文件,不同的命令有不同的优点,可以针对不同的 ...
- NEWBEE软件团队 人员分配情况及分数获得方式
人员分配: PM:李桐 王骜 dev:王骜 刘垚鹏 安康 林旭鹏 黄新越 test:黄伟龙 李桐 马佐霖 黄新越 注:黄新越为女生,不方便平时的交流,所以任务分配较为灵活,特分在两个组里. 评分 ...