题意很明显是要用LCT来维护森林 难点在于如何处理函数之间的关系 我们可以根据题目给的提示关于泰勒展开的式子 将三种函数变成泰勒展开的形式

因为\(x∈[0,1]\) 所以我们可以将三个函数在\(x_0=0\)处展开

\(sin(ax+b)=sin(b)+\frac{acos(b)x}{1!}+\frac{-a^2sin(b)x^2}{2!}+\frac{-a^3cos(b)x^3}{3!}+⋯\)

\(e^{ax+b}=e^b+\frac{ae^bx}{1!}+\frac{a^2e^bx^2}{2!}+\frac{a^3e^bx^3}{3!}+⋯\)

\(ax+b=b+\frac{ax}{1!}+\frac{0x^2}{2!}+\frac{0x^3}{3!}+⋯\)

\(splay\)合并时暴力合并每一位 我处理到\(x^{13}\)就可以\(AC\)了

#include<bits/stdc++.h>
using namespace std;
#define FO(x) {freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);}
#define pa pair<int,int>
#define mod 1000000007
#define ll long long
#define mk make_pair
#define pb push_back
#define fi fisrt
#define se second
#define cl(x) memset(x,0,sizeof x)
#ifdef Devil_Gary
#define bug(x) cout<<(#x)<<" "<<(x)<<endl
#define debug(...) fprintf(stderr, __VA_ARGS__)
#else
#define bug(x)
#define debug(...)
#endif
const int INF = 0x7fffffff;
const int N=1e5+5;
const int D=13;
inline int read(){
int x=0,rev=0,ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')rev=1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return rev?-x:x;
}
int n,m,cnt,c[N][2],fa[N],q[N],rev[N];
char ss[D];
double tmp[4],fac[D];
struct data{
int type;
double a,b,T[D],v[D];
void calc(){
if(type==1){
double ga=a;
T[0]=tmp[0]=sin(b),tmp[1]=cos(b),tmp[2]=-tmp[0],tmp[3]=-tmp[1];
for(int i=1;i<D;i++) T[i]=tmp[i%4]*ga,ga*=a;
}
else if(type==2){
double eb=exp(b),ga=a;
T[0]=eb;
for(int i=1;i<D;i++) T[i]=eb*ga,ga*=a;
}
else {
T[0]=b,T[1]=a;
for(int i=2;i<D;i++) T[i]=0;
}
}
}s[N];
void update(int x){
for(int i=0;i<D;i++) s[x].v[i]=s[c[x][0]].v[i]+s[c[x][1]].v[i]+s[x].T[i];
}
void pushdown(int x){
int l=c[x][0],r=c[x][1];
if(rev[x]){
rev[x]^=1,rev[l]^=1,rev[r]^=1;
swap(c[x][0],c[x][1]);
}
}
bool isroot(int x){
return c[fa[x]][0]!=x&&c[fa[x]][1]!=x;
}
void rotate(int x){
int y=fa[x],z=fa[y],l=c[y][1]==x,r=l^1;
if(!isroot(y)) c[z][c[z][1]==y]=x;
fa[x]=z,fa[y]=x,fa[c[x][r]]=y;
c[y][l]=c[x][r],c[x][r]=y;
update(y),update(x);
}
void splay(int x){
cnt=0,q[++cnt]=x;
for(int i=x;!isroot(i);i=fa[i]) q[++cnt]=fa[i];
for(int i=cnt;i;--i) pushdown(q[i]);
while(!isroot(x)){
int y=fa[x],z=fa[y];
if(!isroot(y)){
if(c[y][0]==x^c[z][0]==y) rotate(x);
else rotate(y);
}
rotate(x);
}
}
void access(int x){
for(int t=0;x;t=x,x=fa[x])
splay(x),c[x][1]=t,update(x);
}
void makeroot(int x){
access(x),splay(x),rev[x]^=1;
}
int find(int x){
access(x),splay(x);while(c[x][0]) x=c[x][0];
return x;
}
void cut(int x,int y){
makeroot(x),access(y),splay(y);
if(c[y][0]==x) c[y][0]=fa[x]=0;
}
void link(int x,int y){
makeroot(x),fa[x]=y;
}
int main(){
#ifdef Devil_Gary
freopen("in.txt","r",stdin);
#endif
n=read(),m=read(),scanf("%s",ss),fac[0]=1;
for(int i=1;i<D;i++) fac[i]=fac[i-1]*i;
for(int i=1;i<=n;i++) s[i].type=read(),scanf("%lf%lf",&s[i].a,&s[i].b),s[i].calc();
for(int i=1;i<=m;i++){
int u,v,c;double x,y,ans;
scanf("%s",ss);
if(ss[0]=='a'){
u=read()+1,v=read()+1,link(u,v);
}
else if(ss[0]=='d'){
u=read()+1,v=read()+1,cut(u,v);
}
else if(ss[0]=='m'){
c=read()+1,splay(c),s[c].type=read(),scanf("%lf %lf",&s[c].a,&s[c].b);
s[c].calc(),update(c);
}
else{
u=read()+1,v=read()+1,scanf("%lf",&x);
if(find(u)!=find(v)){
printf("unreachable\n");
continue;
}
makeroot(u),access(v),splay(v),y=x,ans=s[v].v[0];
for(int j=1;j<D;j++,y*=x) ans+=y*s[v].v[j]/fac[j];
printf("%.8le\n",ans);
}
}
}

BZOJ5020 [THUWC 2017]在美妙的数学王国中畅游LCT的更多相关文章

  1. BZOJ5020: [THUWC 2017]在美妙的数学王国中畅游(LCT,泰勒展开,二项式定理)

    Description 数字和数学规律主宰着这个世界.   机器的运转,   生命的消长,   宇宙的进程,   这些神秘而又美妙的过程无不可以用数学的语言展现出来.   这印证了一句古老的名言:   ...

  2. bzoj5020: [THUWC 2017]在美妙的数学王国中畅游

    Description 数学王国中,每个人的智商可以用一个属于 [0,1]的实数表示.数学王国中有 n 个城市,编号从 0 到 n−1 ,这些城市由若干座魔法桥连接.每个城市的中心都有一个魔法球,每个 ...

  3. bzoj5020 & loj2289 [THUWC 2017]在美妙的数学王国中畅游 LCT + 泰勒展开

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5020 https://loj.ac/problem/2289 题解 这个 appear 和 d ...

  4. bzoj 5020(洛谷4546) [THUWC 2017]在美妙的数学王国中畅游——LCT+泰勒展开

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5020 https://www.luogu.org/problemnew/show/P4546 ...

  5. loj2289 [THUWC 2017]在美妙的数学王国中畅游(LCT+Taylor展开)

    link 题目大意: 你需要维护一个树 每个点都有个sin(ax+b)或exp(ax+b)或ax+b 你需要维护一些操作:连边.删边.修改某个点的初等函数.询问某条树链上所有函数带入某个值后权值和或不 ...

  6. 【BZOJ5020】[THUWC 2017]在美妙的数学王国中畅游 泰勒展开+LCT

    [BZOJ5020][THUWC 2017]在美妙的数学王国中畅游 Description 数字和数学规律主宰着这个世界. 机器的运转, 生命的消长, 宇宙的进程, 这些神秘而又美妙的过程无不可以用数 ...

  7. [THUWC 2017]在美妙的数学王国中畅游

    bzoj5020 \[答案误差只要小于 10^{-7}\] 题解 Taylor展开式: \[若f(x)的n阶导数在[a, b]内连续,则f(x)在x_{0}\in[a, b]可表示为\] \[f(x) ...

  8. 解题:THUWC 2017 在美妙的数学王国中畅游

    题面 _“数字和数学规律主宰着这个世界.”_ 在 @i207M 帮助下折腾了半天终于搞懂了导数和泰勒展开,引用某学长在考场上的感受:感觉整个人都泰勒展开了 显然是个奇奇怪怪的东西套上LCT,发现直接维 ...

  9. bzoj 5020: [THUWC 2017]在美妙的数学王国中畅游【泰勒展开+LCT】

    参考:https://www.cnblogs.com/CQzhangyu/p/7500328.html --其实理解了泰勒展开之后就是水题呢可是我还是用了两天时间来搞懂啊 泰勒展开是到正无穷的,但是因 ...

随机推荐

  1. Angular2新人常犯的5个错误

    看到这儿,我猜你肯定已经看过一些博客.技术大会录像了,现在应该已经准备好踏上angular2这条不归路了吧!那么上路后,哪些东西是我们需要知道的? 下面就是一些新手常见错误汇总,当你要开始自己的ang ...

  2. 第11月第8天 ffmpeg ffplay

    static int ffplay_video_thread(void *arg) { FFPlayer *ffp = arg; VideoState *is = ffp->is; AVFram ...

  3. 工具类。父类(Pom文件)

    ego_parent(pom文件) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...

  4. 使用 scm-manager 搭建 git/svn 代码管理仓库(二)

    主要介绍scm的配置. 1.配置为在Windows服务中启动scm-manager的启动方式有多种,可以在DOS(即命令行CMD模式)中启动,也可以在Windows服务中启动. 下面我们采用Windo ...

  5. Ubuntu下ibus在firefox浏览器中选中即删除的解决办法

    Ubuntu上的firefox更新到36版后,ibus在浏览器中输入中文时选中的文字就会被删除.这个问题在很多贴吧.论坛上也有讨论,不过很多方法都无效.最简单有效的办法就是在命令行输入 ibus-se ...

  6. ubuntu16.04 caffe(GPU模式)安装

    历时5天终于完成了,配置中出现了各种各样的Error,这里记录一下,希望能为正在安装的人提供一点帮助. 配置中主要参考博客:http://blog.csdn.net/yhaolpz/article/d ...

  7. Replication监控及自动故障切换

    首先在相应的机器上增加授权 GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.108' IDENTIFIED BY 'repl';GRANT RE ...

  8. springcloud Eureka自我保护机制

    自我保护背景 首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行. 默认情况下,如果Eureka Serve ...

  9. 内存溢出(Memory Overflow)和内存泄露(Memory Leak)的区别

    内存泄漏指你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态 内存溢出指你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数 ...

  10. elasticsearch6.3.2之x-pack6.3.2破解安装并配合kibana使用

    原文链接:https://www.plaza4me.com/article/20180825223826278 由于在elasticsearch在6.3版本之后x-pack是默认安装好的,所以不再需要 ...