BZOJ_1180_[CROATIAN2009]OTOCI_LCT
BZOJ_1180_[CROATIAN2009]OTOCI_LCT
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
- #include <stdio.h>
- #include <string.h>
- #include <algorithm>
- using namespace std;
- #define N 30050
- #define ls ch[p][0]
- #define rs ch[p][1]
- #define get(x) (ch[f[x]][1]==x)
- int ch[N][2],f[N],rev[N],sum[N],val[N],n,m;
- char opt[20];
- inline bool isrt(int p) {
- return ch[f[p]][0]!=p&&ch[f[p]][1]!=p;
- }
- inline void pushdown(int p) {
- if(rev[p]) {
- swap(ch[ls][0],ch[ls][1]); swap(ch[rs][0],ch[rs][1]);
- rev[ls]^=1; rev[rs]^=1; rev[p]=0;
- }
- }
- inline void pushup(int p) {
- sum[p]=sum[ls]+sum[rs]+val[p];
- }
- void update(int p) {
- if(!isrt(p)) update(f[p]);
- pushdown(p);
- }
- void rotate(int x) {
- int y=f[x],z=f[y],k=get(x);
- if(!isrt(y)) ch[z][ch[z][1]==y]=x;
- ch[y][k]=ch[x][!k]; f[ch[y][k]]=y;
- ch[x][!k]=y; f[y]=x; f[x]=z;
- pushup(y); pushup(x);
- }
- void splay(int x) {
- update(x);
- for(int fa;fa=f[x],!isrt(x);rotate(x))
- if(!isrt(fa))
- rotate(get(fa)==get(x)?fa:x);
- }
- void access(int p) {
- int t=0;
- while(p) splay(p),rs=t,pushup(p),t=p,p=f[p];
- }
- void makeroot(int p) {
- access(p); splay(p); swap(ls,rs); rev[p]^=1;
- }
- void link(int x,int p) {
- makeroot(x); splay(p); f[x]=p;
- }
- void cut(int x,int p) {
- makeroot(x); access(p); splay(p); ls=f[x]=0;
- }
- int find(int p) {
- access(p); splay(p);
- while(ls) pushdown(p),p=ls;
- return p;
- }
- void fix(int p,int v) {
- access(p); splay(p); val[p]=v; pushup(p);
- }
- int main() {
- scanf("%d",&n);
- int i,x,y;
- for(i=1;i<=n;i++) scanf("%d",&val[i]);
- scanf("%d",&m);
- for(i=1;i<=m;i++) {
- scanf("%s%d%d",opt,&x,&y);
- if(opt[0]=='e') {
- int t1=find(x),t2=find(y);
- if(t1!=t2) {
- puts("impossible");
- }
- else {
- makeroot(x); access(y); splay(y);
- printf("%d\n",sum[y]);
- }
- }else if(opt[0]=='b') {
- int t1=find(x),t2=find(y);
- if(t1==t2) puts("no");
- else {
- puts("yes"); link(x,y);
- }
- }else {
- fix(x,y);
- }
- }
- }
BZOJ_1180_[CROATIAN2009]OTOCI_LCT的更多相关文章
- BZOJ_1180_[CROATIAN2009]_OTOCI_(LCT)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1180 三种操作: 1.询问x,y是否连通,如果不连通,建一条边x,y 2.把x节点的权值改为t ...
- [bzoj1180][CROATIAN2009]OTOCI_LCT
OTOCI bzoj-1180 CROATIAN-2009 题目大意:给你n个离散的点,m个操作.支持:两点加边(保证还是森林),修改单点权值,询问两点是否联通,查询联通两点之间路径权值. 注释:$1 ...
- BZOJ 1180: [CROATIAN2009]OTOCI [LCT]
1180: [CROATIAN2009]OTOCI Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 961 Solved: 594[Submit][S ...
- BZOJ 1180: [CROATIAN2009]OTOCI
1180: [CROATIAN2009]OTOCI Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 989 Solved: 611[Submit][S ...
- 1180: [CROATIAN2009]OTOCI(LCT)
1180: [CROATIAN2009]OTOCI Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 1200 Solved: 747[Submit][ ...
- 1180: [CROATIAN2009]OTOCI
1180: [CROATIAN2009]OTOCI Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 1032 Solved: 638[Submit][ ...
- 【BZOJ1180】: [CROATIAN2009]OTOCI & 2843: 极地旅行社 LCT
竟然卡了我....忘记在push_down先下传父亲的信息了....还有splay里for():卡了我10min,但是双倍经验还是挺爽的,什么都不用改. 感觉做的全是模板题,太水啦,不能这么水了... ...
- BZOJ1180: [CROATIAN2009]OTOCI
传送门 一遍AC,开心! $Link-Cut-Tree$最后一题 //BZOJ 1180 //by Cydiater //2016.9.18 #include <iostream> #in ...
- bzoj1837: [CROATIAN2009]cavli 凸包1
Description 给你N个点,请循环完成下列任务 1:求出这N个点的凸包的面积 2:拿掉最左或最右或最上或最下的一个点,当点的个数不足三个时停止 Input 第一行,一个数字N 接下来N行,每行 ...
随机推荐
- ios中block访问外部变量的一些注意点
Block类型是一个C级别的语法和运行机制.它与标准的C函数类似,不同之处在于,它除了有可执行代码以外,它还包含了与堆.栈内存绑定的变量.因此,Block对象包含着一组状态数据,这些数据在程序执行时用 ...
- Effective Java 第三版——40. 始终使用Override注解
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- [Java算法分析与设计]--单向链表(List)的实现和应用
单向链表与顺序表的区别在于单向链表的底层数据结构是节点块,而顺序表的底层数据结构是数组.节点块中除了保存该节点对应的数据之外,还保存这下一个节点的对象地址.这样整个结构就像一条链子,称之为" ...
- HTML学习笔记8:表单
什么是表单? 一个网页表单可以将用户输入的数据发送到服务器进行处理.因为互联网用户使用复选框,单选按钮或文本字段填写表格,所以WebForms的形式类似文件或数据库.例如,WebForms ...
- Page_Load不要忘了if (!IsPostBack)
Page_Load不要忘了if (!IsPostBack) 问题:在DropDownList的SelectedIndexChanged事件中绑定数据,运行时,DropDownList控件的Select ...
- python爬虫入门(三)XPATH和BeautifulSoup4
XML和XPATH 用正则处理HTML文档很麻烦,我们可以先将 HTML文件 转换成 XML文档,然后用 XPath 查找 HTML 节点或元素. XML 指可扩展标记语言(EXtensible Ma ...
- NoHttp封装--03 缓存
1.Default模式,也是没有设置缓存模式时的默认模式 这个模式实现http协议中的内容,比如响应码是304时,当然还会结合E-Tag和LastModify等头. StringRequest req ...
- VS2010+OpenCV3.4.1+zbar 64位
1. OpenCV3.4.1和zbar文件夹放到指定的路径下,我把它们放在了"D:\二维码\环境"中. zbar:链接:https://pan.baidu.com/s/11eCDV ...
- C# Ioc、DI、Unity、TDD的一点想法和实践
面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP). 依赖倒置原则(DIP):一种软件架构设计的原则(抽象概念) 控制反转( ...
- C++相关:C++的IO库
前言 基本的IO库设施 istream(输入流类型),提供输入操作. ostream(输出流类型),提供输出操作. cin,一个istream对象,从标准输入读取数据. cout,一个ostream对 ...