当前位置: 首页 > news >正文

校友会网站建设/seo管理

校友会网站建设,seo管理,wordpress sql or,bootstrap框架制作网页只有前四个操作的话就是LCT裸题了 链翻转不也是LCT的基本操作吗.... 等等,翻转的是权值? 正常的翻转改的是各个点的深度,位置与权值的对应关系并没有改变 那么我们可以考虑维护两棵LCT,一棵维护形态,一棵维护位置 翻转…

只有前四个操作的话就是LCT裸题了
链翻转不也是LCT的基本操作吗....
等等,翻转的是权值?
正常的翻转改的是各个点的深度,位置与权值的对应关系并没有改变
那么我们可以考虑维护两棵LCT,一棵维护形态,一棵维护位置
翻转其中一个就相当于改变了对应关系
说的不是很明白的啊....还是看看学姐的blog吧

代码如下:

#include<ctype.h>
#include<cstdio>
#define int long long
#define INF 2147483647000000l
#define N 50020
using namespace std;
typedef long long LL;
inline int read(){int x=0,f=1;char c;do c=getchar(),f=c=='-'?-1:f; while(!isdigit(c));do x=(x<<3)+(x<<1)+c-'0',c=getchar(); while(isdigit(c));return x*f;
}
inline int Max(int a,int b){return a>b?a:b;}
inline int Min(int a,int b){return a<b?a:b;}
inline int max3(int a,int b,int c){return Max(a,Max(b,c));}
inline int min3(int a,int b,int c){return Min(a,Min(b,c));}
int n,m,root,x,y,k,top;
int fir[N];
char c[13];
struct Edge{int to,nex;Edge(){}Edge(int _,int __):to(_),nex(__){}
}nex[N<<1];
inline void add(int x,int y){nex[++top]=Edge(y,fir[x]);fir[x]=top;
}
struct Node{Node *ch[2],*fa,*nex;int sum,minn,maxx,addv,x,siz;bool rev;Node();inline void Pushdown();inline void Add(int);inline void Reverse();inline void maintain(){minn=min3(ch[0]->minn,ch[1]->minn,x);maxx=max3(ch[0]->maxx,ch[1]->maxx,x);sum=ch[0]->sum+ch[1]->sum+x;siz=ch[0]->siz+ch[1]->siz+1;return;}inline int dir(){if(fa->ch[0]==this) return 0;if(fa->ch[1]==this) return 1;return -1;}
}*null,*p[N];
inline void Swap(Node *&a,Node *&b){static Node *c;c=a;a=b;b=c;}
Node::Node(){x=addv=minn=maxx=sum=rev=0;siz=1;ch[0]=ch[1]=nex=fa=null;return;
}
inline void Node::Pushdown(){if(addv){ch[0]->Add(addv);ch[1]->Add(addv);}if(rev) ch[0]->Reverse(),ch[1]->Reverse();if(nex!=null){if(ch[0]!=null) ch[0]->nex=nex;if(ch[1]!=null) ch[1]->nex=nex;}addv=rev=0;
}
inline void Node::Add(int k){if(this==null) return;addv=addv+k;sum=sum+k*siz;x+=k;minn+=k;maxx+=k;return;
}
inline void Node::Reverse(){if(this==null) return;Swap(ch[0],ch[1]);rev=!rev;return;
}
inline void init(){null=new Node;null->ch[0]=null->ch[1]=null->fa=null->nex=null;null->sum=null->x=null->siz=null->addv=null->rev=0;null->minn=INF;null->maxx=-INF;return;
}
void PushUp(Node *x){if(~x->dir()) PushUp(x->fa);x->Pushdown();return;
}
inline Node *K_th(Node *x,int k){if(x==null) return x;x->Pushdown();if(x->ch[0]->siz+1==k)return x;if(k<=x->ch[0]->siz) return K_th(x->ch[0],k);else return K_th(x->ch[1],k-x->ch[0]->siz-1);
}
inline void Rotate(Node *x,int d){static Node *k;static int di;k=x->ch[d^1];x->ch[d^1]=k->ch[d];if(x->ch[d^1]!=null) x->ch[d^1]->fa=x;k->ch[d]=x;if(~(di=x->dir())) x->fa->ch[di]=k;k->fa=x->fa;x->fa=k;x->maintain();k->maintain();return;
}
inline void Splay(Node *x){static int d;PushUp(x);while(~(d=x->dir())){if(x->fa->dir()==d)Rotate(x->fa->fa,d^1);Rotate(x->fa,d^1);}return;
}
inline void Splay_(Node *x,Node *&y){Splay(x);Splay(x->nex);y=K_th(x->nex,x->ch[0]->siz+1);Splay(y);return;
}
void dfs(int x,int fa){p[x]=new Node;p[x]->nex=new Node;p[x]->fa=p[fa];p[x]->nex->fa=p[fa]->nex;for(int i=fir[x];i;i=nex[i].nex){if(nex[i].to==fa) continue;dfs(nex[i].to,x);}
}
inline void Access(Node *x){static Node *pre,*pre_,*x_;pre=pre_=x_=null;while(x!=null){Splay_(x,x_);x->nex=x_;x->ch[1]->nex=x_->ch[1];x->ch[1]=pre;x_->ch[1]=pre_;pre_->fa=x_;x->maintain();x_->maintain();pre=x;pre_=x_;x=x->fa;}return;
}
inline void MakeRoot(Node *x){static Node *k;Access(x);Splay_(x,k);x->Reverse();k->Reverse();return;
}
inline Node *Extract(Node *x,Node *y){static Node *y_;MakeRoot(x);Access(y);Splay_(y,y_);return y_;
}
main(){init();n=read();m=read();root=read();for(register int i=1;i<n;i++){x=read();y=read();add(x,y);add(y,x);}p[0]=null;dfs(root,0);for(register int i=1;i<=m;i++){scanf("%s",c+1);x=read();y=read();if(c[3]=='c') k=read(),Extract(p[x],p[y])->Add(k);else if(c[3]=='m') printf("%lld\n",Extract(p[x],p[y])->sum);else if(c[3]=='j') printf("%lld\n",Extract(p[x],p[y])->maxx);else if(c[3]=='n') printf("%lld\n",Extract(p[x],p[y])->minn);else Extract(p[x],p[y])->Reverse();}return 0;
}

转载于:https://www.cnblogs.com/Duan2baka/p/8674381.html

http://www.lbrq.cn/news/835921.html

相关文章:

  • 缤纷网站免费做服装/seo外链怎么做能看到效果
  • 石家庄网站公司/小辉seo
  • 软件开发公司怎么找客户/seo优化的网站
  • b2b网站建设报价/提高工作效率英语
  • 网站开发保密协议模板/纯注册app拉新平台
  • 赣州建网站/seo诊断工具有哪些
  • 深圳注册公司育君财税/高级seo
  • 上线了做网站怎么样/搜索引擎排名优化方案
  • 把网站打包微信小程序/外链信息
  • 网站建设报价明细模板/软件培训班
  • 网站上面的内容里面放照片怎么做的/优化seo报价
  • 如何做网站url优化/品牌运营方案
  • 阿里云 oss做网站/如何快速推广app
  • 扶余市建设局网站/app推广项目从哪接一手
  • 网站建设及推广预算表/惠州网站排名提升
  • 企业手机网站建设流程/软文营销的写作技巧有哪些
  • 测试网站兼容/百度竞价seo排名
  • 曲阳网站建设推广/武汉seo关键词排名
  • 网站开发外包平台/广告推广计划
  • 做网站找哪个公司好/深圳防疫措施优化
  • 东莞市国外网站建设多少钱/正在播网球比赛直播
  • 家政公司网站建设多少钱/天堂网长尾关键词挖掘网站
  • 广东网站建设公司排名/镇江seo公司
  • 网站开发合同模板免费/免费行情软件网站下载
  • ps手机网站页面设计/免费b2b推广网站大全
  • 潍坊个人做网站的公司/sem扫描电镜是测什么的
  • 昆明网站搜索优化/如何网络推广
  • 加强网站基础建设项目/清远新闻最新消息
  • 购物app大全/南宁seo外包服务商
  • wordpress显示所有tag/网站关键词优化排名技巧
  • 智象科技赋能金融、证券行业 IT 运维
  • 零基础入门:用按键精灵实现视频自动操作(附完整脚本)
  • 产品经理如何绘制流程图
  • 数据投毒技术之标签翻转
  • JavaScript进阶篇——第八章 原型链、深浅拷贝与原型继承全解析
  • 强化第三讲—一元函数微分学的概念