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 --其实理解了泰勒展开之后就是水题呢可是我还是用了两天时间来搞懂啊 泰勒展开是到正无穷的,但是因 ...
随机推荐
- ORB(oriented FAST and rotated BRIEF)特征提取与检测
ORB采取FAST算法检测特征点,采取BRIEF算法计算特征点描述子. 1.检测特征点 检测候选特征点周围一圈的像素值,若有足够多的像素值与候选特征点的差异都较大,则认为该候选特征点是特征点. 对于上 ...
- 代码basic讲解
key1 import os g = os.walk(r'D:\Users\Quincy_C\PycharmProjects\S6')print(next(g))print(next(g)) 第一次n ...
- //生成四位数的验证码--->
- C# 后台获取前台交互判断
前台传来明细 ,判断是否修改,在把前台 的数据组成新的类保存 public class tt { public string id { get; set; } public string e_id { ...
- (13)自定意义标签和过滤器 (templatetags)
过滤器分内置和自定意义 PS:过滤器可以用在for循环和if判断后,但是标签不能使用在for循环和if判断后 内置过滤器: add(在模板中实现加减法) default(就是当传入的变量是False的 ...
- 【HDOJ1217】【Floyd求最长路】
http://acm.hdu.edu.cn/showproblem.php?pid=1217 Arbitrage Time Limit: 2000/1000 MS (Java/Others) M ...
- da shu mo ban
#include<bits/stdc++.h> using namespace std; ;/*精度位数,自行调整*/ //1.如果需要控制输出位数的话,在str()里面把len调成需要的 ...
- hdu1796 How many integers can you find 容斥原理
Now you get a number N, and a M-integers set, you should find out how many integers which are small ...
- AangularJS相关术语
1. 数据模型对象(model object)是指$scope对象.$scope对象又是一个简单的JavaScript对象,其中的属性可以被视图访问,也可以同控制器进行交互. 2. $scope ...
- 计算机网络-数据结构-MAC帧头-IP头-TCP头-UDP头
第0章 数据是如何进行一步步的封装的 第一章:mac帧头定义 帧头数据结构的定义: 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME ...