bzoj 1180: [CROATIAN2009]OTOCI【LCT】
一道几乎是板子的LCT,但是沉迷数学很久时候突然1A了这道题还是挺开心的
#include<iostream>
#include<cstdio>
using namespace std;
const int N=30005;
int n,q,sum[N],v[N],s[N],top;
char c[20];
struct qwe
{
int c[2],f,sum,lz;
}t[N];
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
bool srt(int x)
{
return t[t[x].f].c[0]!=x&&t[t[x].f].c[1]!=x;
}
void pd(int x)
{
if(t[x].lz)
{
t[x].lz=0;
t[t[x].c[0]].lz^=1;
t[t[x].c[1]].lz^=1;
swap(t[x].c[0],t[x].c[1]);
}
}
void ud(int x)
{
t[x].sum=t[t[x].c[0]].sum+t[t[x].c[1]].sum+v[x];
}
void zhuan(int x)
{
int y=t[x].f,z=t[y].f,l=t[y].c[0]!=x,r=l^1;
if(!srt(y))
t[z].c[t[z].c[0]!=y]=x;
t[x].f=z;
t[y].c[l]=t[x].c[r];
t[t[x].c[r]].f=y;
t[x].c[r]=y;
t[y].f=x;
ud(y);
ud(x);
}
void splay(int x)
{
top=0;
s[++top]=x;
for(int i=x;!srt(i);i=t[i].f)
s[++top]=t[i].f;
for(int i=top;i>=1;i--)
pd(s[i]);
while(!srt(x))
{
int y=t[x].f,z=t[y].f;
if(!srt(y))
{
if((t[z].c[0]==y)^(t[y].c[0]==x))
zhuan(x);
else
zhuan(y);
}
zhuan(x);
}
}
void acc(int x)
{
for(int i=0;x;i=x,x=t[x].f)
{
splay(x);
t[x].c[1]=i;
ud(x);
}
}
void mkrt(int x)
{
acc(x);
splay(x);
t[x].lz^=1;
}
void lk(int x,int y)
{
mkrt(x);
t[x].f=y;
}
int getrt(int x)
{
acc(x);
splay(x);
while(t[x].c[0])
x=t[x].c[0];
return x;
}
int main()
{
n=read();
for(int i=1;i<=n;i++)
t[i].sum=v[i]=read();
q=read();
while(q--)
{
scanf("%s",c);
int x=read(),y=read();
//cout<<c<<endl;
if(c[0]=='b')
{
if(getrt(x)==getrt(y))
puts("no");
else
{
puts("yes");
lk(x,y);
}
}
else if(c[0]=='p')
{
mkrt(x);
v[x]=y;
ud(x);
}
else
{
if(getrt(x)!=getrt(y))
puts("impossible");
else
{
mkrt(x);
acc(y);
splay(y);
printf("%d\n",t[y].sum);
}
}
}
return 0;
}
/*
5
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
*/
bzoj 1180: [CROATIAN2009]OTOCI【LCT】的更多相关文章
- BZOJ1180 [CROATIAN2009]OTOCI 【LCT】
题目 给出n个结点以及每个点初始时对应的权值wi.起始时点与点之间没有连边.有3类操作: 1.bridge A B:询问结点A与结点B是否连通.如果是则输出"no".否则输出&qu ...
- 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][ ...
- 【刷题】BZOJ 1180 [CROATIAN2009]OTOCI
Description 给出n个结点以及每个点初始时对应的权值wi.起始时点与点之间没有连边.有3类操作: 1.bridge A B:询问结点A与结点B是否连通. 如果是则输出"no&quo ...
- 1180: [CROATIAN2009]OTOCI
1180: [CROATIAN2009]OTOCI Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 1032 Solved: 638[Submit][ ...
- 【BZOJ2049】【LCT】Cave 洞穴勘测
Description 辉 辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通 道组成,并且每条通道连接了 ...
- 【HDU4010】【LCT】Query on The Trees
Problem Description We have met so many problems on the tree, so today we will have a query problem ...
- BZOJ 1016 最小生成树计数 【模板】最小生成树计数
[题解] 对于不同的最小生成树,每种权值的边使用的数量是一定的,每种权值的边的作用是确定的 我们可以先做一遍Kruskal,求出每种权值的边的使用数量num 再对于每种权值的边,2^num搜索出合法使 ...
随机推荐
- [Android] 通过GridView仿微信动态添加本地图片
原文:http://blog.csdn.net/eastmount/article/details/41808179 前面文章讲述的都是"随手拍"中图像处理的操作,此篇文章主要讲述 ...
- Python高级进阶(二)Python框架之Django写图书管理系统(LMS)
正式写项目准备前的工作 Django是一个Web框架,我们使用它就是因为它能够把前后端解耦合而且能够与数据库建立ORM,这样,一个Python开发工程师只需要干自己开发的事情就可以了,而在使用之前就我 ...
- React学习及实例开发(三)——用react-router跳转页面
本文基于React v16.4.1 初学react,有理解不对的地方,欢迎批评指正^_^ 一.定义路由 1.安装react-router npm install react-router@ --sav ...
- Java: 创建自带依赖库的Jar包
pom.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo ...
- MAC上反编译android apk---apktool, dex2jar, jd-jui安装使用(含手动签名)
前文 介绍了在Windows平台利用强大的APK-Multi-Tool进行反编译apk,修改smali源码后再回编译成apk的流程,最近受人之托,破解个apk,所幸的是所用到的这三个软件都是跨平台的, ...
- js:简单的拖动效果
效果演示:https://jsfiddle.net/dwqs/b5ywws9f/embedded/result/ html: <div class="wrap"> &l ...
- 安装和配置Apache-tomcat
https://tomcat.apache.org/download-90.cgi 我随便下载了一个,而且解压了 我把路径:G:\php\apache-tomcat-9.0.6\bin 放入path, ...
- Visual Studio安装空白 和 VS Code打开失败解决方案
微软博文:https://docs.microsoft.com/zh-cn/visualstudio/install/troubleshooting-installation-issues?view= ...
- 微软Build2016:Xamarin杂记
去年的Build2015技术大会.留给人印象最深的莫过是Windows 10在手机端.PC端.Xbox等硬件平台上的大一统.还有非常具有科幻气质的HoloLens技术的各种展示.去年尽管也展示了Xam ...
- Library Project里面使用Case语句判断R.id值报错。case expressions must be constant expressions
原文地址:http://blog.csdn.net/wchinaw/article/details/7325641 在一般的Android项目里R里面的资源声明看起来是这样的: public stat ...