bzoj 2843: 极地旅行社
Time Limit: 10 Sec Memory Limit: 256 MB
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: 2843
User: JYYHH
Language: C++
Result: Accepted
Time:1584 ms
Memory: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;
}
bzoj 2843: 极地旅行社的更多相关文章
- BZOJ 2843: 极地旅行社( LCT )
LCT.. ------------------------------------------------------------------------ #include<cstdio> ...
- bzoj 2843 极地旅行社(LCT)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2843 [题意] 给定一个森林,要求提供连边,修改点值,查询路径和的操作. [思路] L ...
- BZOJ 2843: 极地旅行社 lct splay
http://www.lydsy.com/JudgeOnline/problem.php?id=2843 https://blog.csdn.net/clove_unique/article/deta ...
- BZOJ 1180 [CROATIAN 2009]OTOCI // BZOJ 2843 极地旅行社 // Luogu P4321 [COCI 2009] OTOCI / 极地旅行社 (LCA板题)
emmm-标题卡着长度上限- LCT板题-(ε=ε=ε=┏(゜ロ゜;)┛) CODE #include <cctype> #include <cmath> #include & ...
- 【BZOJ】1180: [CROATIAN2009]OTOCI & 2843: 极地旅行社(lct)
http://www.lydsy.com/JudgeOnline/problem.php?id=1180 今天状态怎么这么不好..................................... ...
- 【BZOJ1180】: [CROATIAN2009]OTOCI & 2843: 极地旅行社 LCT
竟然卡了我....忘记在push_down先下传父亲的信息了....还有splay里for():卡了我10min,但是双倍经验还是挺爽的,什么都不用改. 感觉做的全是模板题,太水啦,不能这么水了... ...
- 【BZOJ-2843&1180】极地旅行社&OTOCI Link-Cut-Tree
2843: 极地旅行社 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 323 Solved: 218[Submit][Status][Discuss ...
- BZOJ2843: 极地旅行社
2843: 极地旅行社 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 90 Solved: 56[Submit][Status] Descripti ...
- [bzoj2843&&bzoj1180]极地旅行社 (lct)
双倍经验双倍的幸福... 所以另一道是300大洋的世界T_T...虽然题目是一样的,不过2843数据范围小了一点... 都是lct基本操作 #include<cstdio> #includ ...
随机推荐
- day02-python基础2
操作 列表是用来存储一组数据,可以实现对列表中元素的增删改查等操作. 转换: list(string):把字符串转为列表 声明: 列表使用方括号 查询: 根据元素下标获取列表中元素的值 切片: [0: ...
- crmsh语法
.查看配置信息 crm(live)# configure crm(live)configure# show node node1 node node2 property cib-bootstrap-o ...
- SQL 基础笔记(二):进阶查询
本笔记整理自<SQL 基础教程>.<MySQL 必知必会>和网上资料.个人笔记不保证正确. 一.复杂查询 视图 将 SELECT 查询包装成一个虚拟表,该虚拟表就被称为视图.( ...
- 六、OCP 开闭原则
OCP原则:“对扩展开放,对修改关闭” 这句话是简述,其实隐藏了重要的主语.真正的意义是:对使用者修改关闭,对提供者扩展开放. 例如: class A 和 class B.A调用了B的一个方法,那么A ...
- 启动Tomcat时的常见问题及解决办法
问题一:环境变量 1.检查jdk 验证jdk的配置,在运行-cmd中输入 java -version 即表示安装成功. 如果jdk没有问题,还需要配置两个环境变量.找到jdk和jre的路径,配置JAV ...
- Scala 基础(8)—— 占位符_和部分应用函数
1. 占位符 _ 针对 Scala 基础(7)—— 函数字面量和一等函数 中最后提到的,关于 filter 函数字面量的精简写法,可以使用占位符 _ 来代替. 占位符_,用来表示一个或者多个参数.(这 ...
- P1023 税收与补贴问题
题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递 ...
- HDU - 2814 Visible Trees
题意: m*n(1<=m,n<=100000)的森林里,起始点在(1,1),某人从(0,0)点开始看,问能看到多少棵树. 题解: 求出1~x中的每个数与1~y的数中互质的数的总和.用素数筛 ...
- OpenCV 2.4.9 学习笔记(3)—— OpenCV自动为输出数组(矩阵)分配内存
OpenCV大部分时候会为OpenCV方法中的输出数据(方法的参数)自动分配内存,所以如果一个方法的参数有一个或者多个输入数组(cv::Mat 实例)和一些输出数组时,OpenCV会自动为输出数组分配 ...
- CRichEditCtrl 输入字符串长度限制
1.我用 CRichEditCtrl 控件,发现它通过代码可以向里面写大于 32KB 的字符,但手工却只能输入小于 32767 个字符,再多则自动舍弃. 2.初始化时调用CRichEditCtrl:: ...