题意很明显是要用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. SQL记录-PLSQL-EXIT/CONTINUE/GOTO

    PL/SQL EXIT语句   在PL/SQL编程语言中,EXIT语句有以下两种用法: 当循环中遇到EXIT语句循环立即终止,程序控制继续下一个循环语句后面. 如果使用嵌套循环(即一个循环内的另一个循 ...

  2. POJ - 2240 Arbitrage(Bellman-Ford)

    https://vjudge.net/problem/POJ-2240 题意 已知n种货币,以及m种货币汇率及方式,问能否通过货币转换,使得财富增加. 分析 Bellman-Ford判断正环,注意初始 ...

  3. stickey-footer实现footer固定页面底部

    先看看实现效果:http://getbootstrap.com/2.3.2/examples/sticky-footer.html 当一个网页比较简单,内容比较少使得网页不足浏览器高的时候,为了显示更 ...

  4. JQuery对CheckBox的一些相关操作

    一.通过选择器选取CheckBox: 1.给CheckBox设置一个id属性,通过id选择器选取: <input type="checkbox" name="myB ...

  5. python3解析库pyquery

    pyquery是一个类似jquery的python库,它实现能够在xml文档中进行jQuery查询,pyquery使用lxml解析器进行快速在xml和html文档上操作,它提供了和jQuery类似的语 ...

  6. Linux本地解析文件/etc/hosts说明【原创】

    windows的域名本地解析文件hosts是可以一个域名对多个IP,如果有一个IP有问题,可以去解析到其他IP Linux的本地解析文件/etc/hosts,是否也可以这样呢.下面做了个测试 先看一下 ...

  7. linux服务器如何添加sudo用户

    1. 编辑 vi /etc/ssh/sshd_config 文件,修改默认端口:默认Port为22,并且已经注释掉了,修改是把注释去掉,并修改成其它的端口. 原来用默认端口:22修改为:8975 (这 ...

  8. 用Python连接SQLServer抓取分析数据、监控 (pymssql)

    Python 环境:python3 服务器环境: centos6.5 数据库: Mysql 大概流程:在装有Python服务器,利用pymssql库连接MSSQL生产数据库取出数据然后写进mysql数 ...

  9. XPATH的几个常用函数

    1.contains (): //div[contains(@id,'in')] ,表示选择id中包含有’in’的div节点2.text():由于一个节点的文本值不属于属性,比如“<a clas ...

  10. Vue项目中如何引用外部js

    第一种方法:(感觉这个有问题) 1.把需要的js放到static文件夹下 2.在Index.html页面引入 3.在webpack.base.conf.js添加下面代码 externals: { 'W ...