bzoj 2843: 极地旅行社
Submit: 1077 Solved: 645
[Submit][Status][Discuss]
Description
Input
Output
对于每个bridge命令与excursion命令,输出一行,为题目描述所示。
Sample Input
4 2 4 5 6
10
excursion 1 1
excursion 1 2
bridge 1 2
excursion 1 2
bridge 3 4
bridge 3 5
excursion 4 5
bridge 1 3
excursion 2 4
excursion 2 5
Sample Output
impossible
yes
6
yes
yes
15
yes
15
16
/**************************************************************Problem: 2843User: JYYHHLanguage: C++Result: AcceptedTime:1584 msMemory:2124 kb
****************************************************************/#include<bits/stdc++.h>
#define maxn 30005
using namespace std;
int ch[maxn][2],a[maxn];
int tot[maxn],tag[maxn];
int q[maxn],tp,n,m,f[maxn];
char s[11];inline int get(int x){return ch[f[x]][1]==x;
}inline int isroot(int x){return (ch[f[x]][1]!=x&&ch[f[x]][0]!=x);
}inline void update(int x){tot[x]=a[x]+tot[ch[x][0]]+tot[ch[x][1]];
}inline void pushdown(int x){if(tag[x]){tag[x]=0,swap(ch[x][0],ch[x][1]);tag[ch[x][1]]^=1,tag[ch[x][0]]^=1;}
}inline void rotate(int x){int fa=f[x],ffa=f[fa],tp=get(x);ch[fa][tp]=ch[x][tp^1],f[ch[fa][tp]]=fa;ch[x][tp^1]=fa,f[fa]=x;f[x]=ffa;if(ch[ffa][1]==fa||ch[ffa][0]==fa) ch[ffa][ch[ffa][1]==fa]=x;update(fa),update(x);
}inline void splay(int x){for(int i=x;;i=f[i]){q[++tp]=i;if(isroot(i)) break;}for(;tp;tp--) pushdown(q[tp]);for(;!isroot(x);rotate(x))if(!isroot(f[x])) rotate(get(f[x])==get(x)?f[x]:x);
}inline void access(int x){for(int t=0;x;t=x,x=f[x]) splay(x),ch[x][1]=t,update(x);
}inline void makeroot(int x){access(x),splay(x),tag[x]^=1;
}inline int froot(int x){access(x),splay(x);while(ch[x][0]) x=ch[x][0];return x;
}inline int link(int x,int y){makeroot(x),f[x]=y;
}int main(){int uu,vv;scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",a+i);scanf("%d",&m);while(m--){scanf("%s",s);if(s[0]=='b'){scanf("%d%d",&uu,&vv);if(froot(uu)==froot(vv)) puts("no");else link(uu,vv),puts("yes");}else if(s[0]=='p'){scanf("%d%d",&uu,&vv);splay(uu);a[uu]=vv,update(uu);}else{scanf("%d%d",&uu,&vv);if(froot(uu)!=froot(vv)) puts("impossible");else{makeroot(vv),access(uu),splay(uu);printf("%d\n",tot[uu]);}}}return 0;
}
转载于:https://www.cnblogs.com/JYYHH/p/8459951.html
bzoj 2843: 极地旅行社相关推荐
- BZOJ 2843 极地旅行社
[题解] 这道题其实有个树状数组维护dfs序的做法,不过懒得想那么多直接写了Link-Cut Tree 1 #include<cstdio> 2 #include<algorithm ...
- 2843: 极地旅行社
Description 不久之前,Mirko建立了一个旅行社,名叫"极地之梦".这家旅行社在北极附近购买了N座冰岛,并且提供观光服 务.当地最受欢迎的当然是帝企鹅了,这些小家伙经常 ...
- bzoj2843极地旅行社题解
bzoj2843极地旅行社题解 题目大意 有n座小岛,当中每一个岛都有若干帝企鹅. 一開始岛与岛之间互不相连.有m个操作.各自是在两个岛之间修一座双向桥,若两岛已连通则不修并输出no,若不连通就输出y ...
- bzoj2843极地旅行社
bzoj2843极地旅行社 题意: 一些点,每个点有一个权值.有三种操作:点与点连边,单点修改权值,求两点之间路径上点的权值和(需要判输入是否合法) 题解: 以前一直想不通为什么神犇们的模板中LCT在 ...
- BZOJ2843 - 极地旅行社
Portal Description 给出\(n(n\leq3\times10^4)\)个独立的带权顶点,对其进行\(m(m\leq10^5)\)次操作: 连接两个不连通的节点.如果它们已经联通,输出 ...
- 【BZOJ 2843】极地旅行社
复习一下Link Cut Tree的模板. #include<cstdio> #include<cstring> #include<algorithm> #defi ...
- BZOJ2843:极地旅行社
Description 不久之前,Mirko建立了一个旅行社,名叫"极地之梦".这家旅行社在北极附近购买了N座冰岛,并且提供观光服务. 当地最受欢迎的当然是帝企鹅了,这些小家伙经常 ...
- 极地旅行社[LCT]
题目描述 不久之前,Mirko建立了一个旅行社,名叫"极地之梦".这家旅行社在北极附近购买了N座冰岛,并且提供观光服务. 当地最受欢迎的当然是帝企鹅了,这些小家伙经常成群结队的游走 ...
- [COCI 2009] OTOCI / 极地旅行社
题目描述 不久之前,Mirko 建立了一个旅行社,名叫"极地之梦".这家旅行社在北极附近购买了 nn 座冰岛,并且提供观光服务. 当地最受欢迎的当然是帝企鹅了,这些小家伙经常成群结 ...
最新文章
- Windows服务的安装,启动,停止和卸载
- boost::histogram::axis::circular用法的测试程序
- Java Decimal范围_Java BigDecimal初探
- cmstop框架中的js设计content.js
- 如何做到注册不到三年Github标星47.1k+(几点经验)
- 2018 年程序员求生欲测试题(全国卷)
- VFP+6.0中文版教程--初级教程
- 诺顿5月17日病毒库误报,导致系统文件被删除
- Scala(第五节)actor并发编程、文件操作和网络请求、隐式转换和隐式参数、Akka并发编程、Akka模拟简易Spark通信
- Android 中的hook技术是什么
- Load和Initialize的区别和使用
- 【独行秀才】macOS Big Sur 11.6.5正式版(20G517)原版镜像
- 模拟计算 |“五重解读”带你玩转CO2RR描述符-科学指南针
- teamviewer连接不上的原因及解决方法有哪些
- 小程序源码:网课查题微信小程序源码下载,题库资源丰富自动采集,支持语音拍照识别
- 学习软件之epub阅读器推荐
- Windows API一日一练(29)SelectObject和DeleteObject函数
- Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCVSharp实现Mono12和Mono16位深度的图像保存(C#)
- Vue.js入门指南(一)
- 未来刷脸支付是能够占据市场很多的份额
热门文章
- 河北金融学院计算机与科学,河北金融学院计算机科学与技术专业2016年在河北理科高考录取最低分数线...
- CyclicBarrier底层实现和原理
- @Target({ElementType.METHOD, ElementType.TYPE})
- ​四周第一次课(4月11日)lvm讲解
- java Web程序使用wro4j合并、压缩js、css等静态资源
- Linux环境下查看网络性能的基本命令
- jboss7的服务器开启和关闭命令
- 桌面虚拟化的架构模块化
- 关于mysql的论文,大家给点建议
- 为什么负数的补码是取反加一