bzoj3815: 卡常数
随机数据,带修改,求到空间中到给定点距离为给定值的点的编号,唯一解。
建三维kdtree,对查询用可行性剪枝在树上找,由于数据随机,插入删除时不需要维护平衡。
#include<bits/stdc++.h>
using namespace std;
typedef double ld;
const ld _0=1e-;
int n,m,res;
ld _a,_b,la=0.1,X[],R;
void mins(ld&a,ld b){if(a>b)a=b;}
void maxs(ld&a,ld b){if(a<b)a=b;}
ld f(ld x){return x=la*x+,_a*x-_b*sin(x);}
void $(ld&x){
ld L=-,R=;
while(R-L>1e-){
ld M=(L+R)*.;
f(M)<x?L=M:R=M;
}
x=(L+R)*.;
}
char ib[],*ip=ib;
int _(){
int x=;
while(*ip<)++ip;
while(*ip>)x=x*+*ip++-;
return x;
}
ld _Lf(){
ld x=;
bool f=;
while(*ip<)*ip++=='-'?f=:;
while(*ip>)x=x*+(*ip++-);
if(*ip=='.'){
ld a=.;
for(++ip;*ip>;x+=(*ip++-)*a,a*=.);
}
return f?-x:x;
}
ld max(ld a,ld b){return a>b?a:b;}
ld near(ld x,ld l,ld r){return x<l?l-x:max(x-r,);}
ld far(ld x,ld l,ld r){return max(r-x,x-l);}
ld dis(ld a,ld b,ld c){return a*a+b*b+c*c;}
struct node{
node*c[],*f;
ld x[],mn[],mx[];
int id;
bool chk1(){
return this
&& dis(near(X[],mn[],mx[]),near(X[],mn[],mx[]),near(X[],mn[],mx[]))<R+_0
&& dis( far(X[],mn[],mx[]), far(X[],mn[],mx[]), far(X[],mn[],mx[]))>R-_0;
}
bool chk2(){
return id&&fabs(dis(x[]-X[],x[]-X[],x[]-X[])-R)<_0;
}
void init(int ID,bool d){
id=ID;
for(int i=;i<;++i){
x[i]=_Lf();
if(d)$(x[i]);
mn[i]=mx[i]=x[i];
}
}
void up(){
if(id)for(int i=;i<;++i)mn[i]=mx[i]=x[i];
else for(int i=;i<;++i)mn[i]=1e10,mx[i]=-1e10;
for(int i=;i<;++i)if(c[i]){
c[i]->f=this;
if(c[i]->mn[]>c[i]->mx[])c[i]=;
else for(int j=;j<;++j){
mins(mn[j],c[i]->mn[j]);
maxs(mx[j],c[i]->mx[j]);
}
}
}
}ns[],*np=ns,*rt,*nr[];
int D=;
bool operator<(const node&a,const node&b){
return a.x[D]<b.x[D];
}
node*build(node*l,node*r){
if(l==r)return ;
node*m=l+(r-l>>);
nth_element(l,m,r);
D=(D+)%;
m->c[]=build(l,m);
m->c[]=build(m+,r);
m->up();
D=(D+)%;
return m;
}
void ins(node*w,node*a,int D){
int d=a->x[D]>w->x[D];
if(w->c[d])ins(w->c[d],a,(D+)%);
else w->c[d]=a;
w->up();
}
bool find(node*w){
if(!w->chk1())return ;
if(w->chk2())return res=w->id,;
return find(w->c[])||find(w->c[]);
}
int main(){
fread(ib,,sizeof(ib),stdin);
n=_(),m=_(),_a=_Lf(),_b=_Lf();
for(int i=;i<=n;++i)np++->init(i,);
rt=build(ns,np);
for(node*a=ns;a!=np;++a)nr[a->id]=a;
while(m--){
int op=_();
if(op){
X[]=_Lf();
X[]=_Lf();
X[]=_Lf();
R=_Lf();
$(X[]),$(X[]),$(X[]),$(R);
R*=R;
find(rt);
la=res;
printf("%d\n",res);
}else{
ld _id=_Lf();
$(_id);
int id=round(_id);
node*u=nr[id];
for(u->id=;u;u->up(),u=u->f);
np->init(id,);
ins(rt,nr[id]=np++,);
}
}
return ;
}
bzoj3815: 卡常数的更多相关文章
- Interesting卡常数
C++ Interesting卡常数 作为一名OIer,在Noip中卡(kǎ 我就爱读kǎ)常数可以说是必备技巧.在此总结一下我所知卡常数的神奇手法: IO优化 fread 和 fwrite ,如果还 ...
- CF 86D 莫队(卡常数)
CF 86D 莫队(卡常数) D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes i ...
- NOIP卡常数技巧
NOIP卡常数技巧 https://blog.csdn.net/a1351937368/article/details/78162078 http://www.mamicode.com/info-de ...
- ACM卡常数(各种玄学优化)
首先声明,本博文部分内容仅仅适用于ACM竞赛,并不适用于NOIP与OI竞赛,违规使用可能会遭竞赛处理,请慎重使用!遭遇任何情况都与本人无关哈=7= 我也不想搞得那么严肃的,但真的有些函数在NOIP与O ...
- HDU 6211 卡常数取模 预处理 数论
求所有不超过1e9的 primitive Pythagorean triple中第2大的数取模$2^k$作为下标,对应a[i]数组的和. 先上WIKI:https://en.wikipedia.org ...
- 【UER #1】DZY Loves Graph(待卡常数)
题解: 正解是可持久化并查集 但这个显然是lct可以维护的 但这常数是个问题啊??? #include <bits/stdc++.h> using namespace std; struc ...
- HDU-5373-水题-卡常数时间
姿势就是力量啊! 第一次意识到long long 比 int要慢很多.当时想到了各种优化仍然TLE,最后也没A出来,就是用了long long #include <cstdio> #inc ...
- Vijos p1892 树上的最大匹配 树形DP+计数 被卡常我有特殊技巧heheda
https://vijos.org/p/1892 此题需要手动开栈: <<; //256MB char *p=(char*)malloc(size)+size; __asm__(" ...
- OI中卡常数技巧
一.I/O优化 读入优化是卡常数最重要的一条! inline int read() { ,f=;char c=getchar(); ;c=getchar();} +c-';c=getchar();} ...
随机推荐
- xdoj1321----简单搜索
1321: 营救公主 时间限制: 1 Sec 内存限制: 128 MB提交: 156 解决: 37[提交][状态][讨论版] 题目描述 DSKer今天又做梦了,他的睡眠质量一直很差.他梦见他化身骑 ...
- NET Core + Ocelot + IdentityServer4 + Consul
.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现 先决条件 关于 Ocelot 针对使用 .NET 开发微服务架构或者面向服务架构提供一个统一访 ...
- 组合数的求法 (n<=1e8 可以过来看)
C(n,m) =n!/(m!* (n-m)! ); o(n) 求 1-m的逆元 o(n) 求 n的阶乘 代码实现 https://www.cnblogs.com/linyujun/p/5194189 ...
- ajax的原生调用
https://blog.csdn.net/jitianxia68/article/details/78393406
- [原]android 链接错误
由于没有使用NDK的makefile, 而是把NDK的toolchain集成到现有的build system, 所以出现了诡异的错误: unsupported dynamic reloc R_ARM_ ...
- CH4701 天使玩偶
题意 4701 天使玩偶 0x40「数据结构进阶」例题 描述 题目PDF 样例输入 2 3 1 1 2 3 2 1 2 1 3 3 2 4 2 样例输出 1 2 来源 石家庄二中Violet 3杯省选 ...
- Cassandra基础3
cassandra读性能优化:1.禁用read repair每次读操作,无论读请求设置读一个节点还是多个节点,cassandra返回给客户端最新的数据后,都会后台对比所有副本的数据并对差异数据进行修复 ...
- Python 学习书籍推荐
谁会成为AI 和大数据时代的第一开发语言? 这本已是一个不需要争论的问题.如果说三年前,Matlab.Scala.R.Java 和 Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明 ...
- 深入浅出:MySQL的左连接、右连接、内连接
http://blog.csdn.net/wyzxg/article/details/7276979 三种连接的语法 为便于更多的技友快速读懂.理解,我们只讨论2张表对象进行连接操作的情况,大于2张表 ...
- 关于宽带接两台路由,并且第二台需要关闭DHCP的设置
关于宽带接两台路由,并且第二台需要关闭DHCP的设置 https://wenku.baidu.com/view/e317a12d4b35eefdc8d333cb?pcf=2#1