bzoj5020: [THUWC 2017]在美妙的数学王国中畅游
Description
Input
Output
考虑到函数定义域都是[0,1],维护函数在0.5处的泰勒展开的前几项,可以达到精度要求,然后就是经典的lct操作了
#include<bits/stdc++.h>
typedef double ld;
const int K=,N=1e5+;
ld fiv[K];
struct node{
node*f,*c[];
int rv;
ld v[K],s[K];
void revs(){
if(this)rv^=,std::swap(c[],c[]);
}
void up(ld*a){
for(int i=;i<K;++i)s[i]+=a[i];
}
void up(){
for(int i=;i<K;++i)s[i]=v[i];
if(c[])up(c[]->s);
if(c[])up(c[]->s);
}
void dn(){
if(rv){
c[]->revs();
c[]->revs();
rv=;
}
}
bool nrt(){
return f&&(f->c[]==this||f->c[]==this);
}
int wc(){
return this==f->c[];
}
ld cal(ld x){
x-=0.5;
ld y=;
for(int i=K-;i>=;--i)y=y*x+s[i];
return y;
}
void init(int tp,ld a,ld b){
b+=a/;
if(tp==){
double z[]={sin(b),cos(b),-sin(b),-cos(b)},pa=;
for(int i=;i<K;++i)v[i]=z[i%]*pa*fiv[i],pa*=a;
}else if(tp==){
double z=exp(b);
for(int i=;i<K;++i)v[i]=z*fiv[i],z*=a;
}else if(tp==){
v[]=b,v[]=a;
for(int i=;i<K;++i)v[i]=;
}
up();
}
}ns[N],*ss[N];
int ssp=;
void sc(node*x,int d,node*y){
if(x->c[d]=y)y->f=x;
}
void rot(node*x){
node*f=x->f,*g=f->f;
int d=x->wc();
if(f->nrt())g->c[f->wc()]=x;
x->f=g;
sc(f,d,x->c[d^]);
sc(x,d^,f);
f->up();
}
void sp(node*x){
for(node*a=x;(ss[ssp++]=a)->nrt();a=a->f);
while(ssp)ss[--ssp]->dn();
while(x->nrt()){
node*f=x->f;
if(f->nrt())rot(x->wc()==f->wc()?f:x);
rot(x);
}
x->up();
}
void acs(node*x){for(node*y=;x;sp(x),x->c[]=y,x->up(),y=x,x=x->f);}
void mrt(node*x){acs(x);sp(x);x->revs();}
void lk(node*x,node*y){mrt(x);x->f=y;}
void get(node*x,node*y){mrt(x),acs(y),sp(y);}
void ct(node*x,node*y){get(x,y);x->f=y->c[]=;y->up();}
int n,m,tp;
ld a,b;
int main(){
for(int i=fiv[]=;i<K;++i)fiv[i]=fiv[i-]/i;
scanf("%d%d%*s",&n,&m);
for(int i=;i<n;++i){
scanf("%d%lf%lf",&tp,&a,&b);
ns[i].init(tp,a,b);
}
while(m--){
char op[];
int x,y;
scanf("%s%d%d",op,&x,&y);
if(op[]=='a')lk(ns+x,ns+y);
else if(op[]=='d')ct(ns+x,ns+y);
else if(op[]=='t'){
scanf("%lf",&a);
get(ns+x,ns+y);
node*w=ns+x;
while(w->f)w=w->f;
if(w==ns+y)printf("%.8e\n",w->cal(a));
else puts("unreachable");
sp(ns+x);
}else{
scanf("%lf%lf",&a,&b);
sp(ns+x);
ns[x].init(y,a,b);
}
}
return ;
}
bzoj5020: [THUWC 2017]在美妙的数学王国中畅游的更多相关文章
- BZOJ5020: [THUWC 2017]在美妙的数学王国中畅游(LCT,泰勒展开,二项式定理)
Description 数字和数学规律主宰着这个世界. 机器的运转, 生命的消长, 宇宙的进程, 这些神秘而又美妙的过程无不可以用数学的语言展现出来. 这印证了一句古老的名言: ...
- BZOJ5020 [THUWC 2017]在美妙的数学王国中畅游LCT
题意很明显是要用LCT来维护森林 难点在于如何处理函数之间的关系 我们可以根据题目给的提示关于泰勒展开的式子 将三种函数变成泰勒展开的形式 因为$x∈[0,1]$ 所以我们可以将三个函数在$x_0=0 ...
- 【BZOJ5020】[THUWC 2017]在美妙的数学王国中畅游 泰勒展开+LCT
[BZOJ5020][THUWC 2017]在美妙的数学王国中畅游 Description 数字和数学规律主宰着这个世界. 机器的运转, 生命的消长, 宇宙的进程, 这些神秘而又美妙的过程无不可以用数 ...
- bzoj5020 & loj2289 [THUWC 2017]在美妙的数学王国中畅游 LCT + 泰勒展开
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5020 https://loj.ac/problem/2289 题解 这个 appear 和 d ...
- [THUWC 2017]在美妙的数学王国中畅游
bzoj5020 \[答案误差只要小于 10^{-7}\] 题解 Taylor展开式: \[若f(x)的n阶导数在[a, b]内连续,则f(x)在x_{0}\in[a, b]可表示为\] \[f(x) ...
- 解题:THUWC 2017 在美妙的数学王国中畅游
题面 _“数字和数学规律主宰着这个世界.”_ 在 @i207M 帮助下折腾了半天终于搞懂了导数和泰勒展开,引用某学长在考场上的感受:感觉整个人都泰勒展开了 显然是个奇奇怪怪的东西套上LCT,发现直接维 ...
- bzoj 5020(洛谷4546) [THUWC 2017]在美妙的数学王国中畅游——LCT+泰勒展开
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5020 https://www.luogu.org/problemnew/show/P4546 ...
- loj2289 [THUWC 2017]在美妙的数学王国中畅游(LCT+Taylor展开)
link 题目大意: 你需要维护一个树 每个点都有个sin(ax+b)或exp(ax+b)或ax+b 你需要维护一些操作:连边.删边.修改某个点的初等函数.询问某条树链上所有函数带入某个值后权值和或不 ...
- bzoj 5020: [THUWC 2017]在美妙的数学王国中畅游【泰勒展开+LCT】
参考:https://www.cnblogs.com/CQzhangyu/p/7500328.html --其实理解了泰勒展开之后就是水题呢可是我还是用了两天时间来搞懂啊 泰勒展开是到正无穷的,但是因 ...
随机推荐
- hdu2389 Rain on your Parade 二分图匹配--HK算法
You’re giving a party in the garden of your villa by the sea. The party is a huge success, and every ...
- Json工具类JsonUtil
import com.alibaba.fastjson.JSONArray; import com.fasterxml.jackson.core.JsonProcessingException; im ...
- doc 常用命令
★ 查看java环境变量 echo %JAVA_HOME% echo %PATH% echo %CLASSPATH%
- 彻底理解一致性哈希算法(consistent hashing)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...
- 【添加tomcat里lib下的jar包】eclipse中The project cannot be built until build path errors are resolved
问题描诉:在eclipse中新建了一个web项目,把myeclipse中正常的项目拷贝到eclipse的src和webcontent目录 然后项目中就出现了× 注意项目中Errors
- mac-ppt-auto-open-recovery-files
mac 每次打开PPT都会出现一个自动保存的文件,不知道这个文件是保存在哪里,该怎么删除 打开finder(访达),按 shift+command+G,输入~/Library/Containers/c ...
- shell dict 操作
shell 读取文件,利用dict 合并第一列 . #!/bin/bash result_file="a" declare -A mydict total=`cat ${resul ...
- python——psutil的使用(获取进程信息)
import psutil psutil.pids() [1, 2, 3, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 26, 27, 28, 2 ...
- Docker网络解决方案-Flannel(转)
转自https://www.cnblogs.com/kevingrace/p/6859114.html Docker跨主机容器间网络通信实现的工具有Pipework.Flannel.Weave.Ope ...
- 推荐一个 .Net Core 的 Redis 库
这是一个网友写的,原文如下: https://www.cnblogs.com/kellynic/p/9803314.html