在此为LCT开一个永久的坑
其实我连splay都还不怎么会。
今天先抄了黄学长的bzoj2049,以后一定要把它理解了。
写LCT怎么能不%数据结构大神yeweining呢?%%%chrysanthemums %%%切掉大森林的全ZJ唯一一人
#include<cstdio>
#include<algorithm>
#define N 1000005
using namespace std;
int n,m;
],c[][],f[][],st[];];
inline bool isroot(int x)
{
]!=x&&c[fa[x]][]!=x;
}
void push_down(int k)
{
],r=c[k][];
if(rev[k])
{
rev[k]^=;rev[l]^=;rev[r]^=;
swap(c[k][],c[k][]);
}
}
void rotate(int x)
{
int y=fa[x],z=fa[y],l,r;
]==x)l=;;
r=l^;
)
{
]==y)c[z][]=x;]=x;
}
fa[x]=z;fa[y]=x;fa[c[x][r]]=y;
c[y][l]=c[x][r];c[x][r]=y;
}
void splay(int x)
{
;st[++top]=x;
for(int i=x;!isroot(i);i=fa[i])
{
st[++top]=fa[i];
}
for(int i=top;i;i--)push_down(st[i]);
while(!isroot(x))
{
int y=fa[x],z=fa[y];
if(!isroot(y))
{
]==x^c[z][]==y)rotate(x);
else rotate(y);
}
rotate(x);
}
}
void access(int x)
{
;
while(x)
{
splay(x);c[x][]=t;t=x;x=fa[x];
}
}
void rever(int x)
{
access(x);splay(x);rev[x]^=;
}
void link(int x,int y)
{
rever(x);fa[x]=y;splay(x);
}
void cut(int x,int y)
{
rever(x);access(y);splay(y);c[y][]=fa[x]=;
}
int find(int x)
{
access(x);splay(x);int y=x;
])y=c[y][];
return y;
}
int main()
{
];
scanf("%d%d",&n,&m);
;i<=m;i++)
{
scanf("%s",s);int x,y;
scanf("%d%d",&x,&y);
]=='C')link(x,y);
]=='D')cut(x,y);
else
{
if(find(x)==find(y))printf("Yes\n");else printf("No\n");
}
}
}
洞穴勘测
http://wenku.baidu.com/link?url=x6FCcjtWt-mcj9-do9MFL7lsXB4o2G1T0aG3p-XFYkuNyLKW0Kg-o-u_DUWnI_L_yIVJfHcrE_ThkrfoBlmWqJM-TburN1KlZO9wOvKJmA3
---------这是一篇很详尽的讲稿
在此为LCT开一个永久的坑的更多相关文章
- 开一个帖子,等有时间了写写如何用shapelib创建点线面等shp图层
开一个帖子,等有时间了写写如何用shapelib创建点线面等shp图层 C#操作shapelib的实例 http://files.cnblogs.com/yuxuetaoxp/Shapelib--D ...
- 准备开一个地图SDK的开源项目
最近有点空闲时间了, 准备开一个地图SDK的开源项目, 现在的地图SDK已经有很多了, 再做一个跟重新发明个轮子差不多, 但还想做的原因是想在别的轮子的基础上造个轮子... 初步设想是基于开源的地图渲 ...
- export的变量另开一个终端失效解决方法
有时候,我们需要把一个export的变量全局话,否则每开一个终端又需要重新export,很是麻烦 首先直接export某个变量的话就只能在当前子终端生效,另开一个终端就失效了 如果修改.bash_pr ...
- java程序怎么在一个电脑上只启动一次,只开一个进程
目录 <linux文件锁flock> <NIO文件锁FileLock> <java程序怎么在一个电脑上只启动一次,只开一个进程> 方案1: 单进程程序可以用端口绑定 ...
- BeginInvoke 方法真的是新开一个线程进行异步调用吗?
转自原文BeginInvoke 方法真的是新开一个线程进行异步调用吗? BeginInvoke 方法真的是新开一个线程进行异步调用吗? 参考以下代码: public delegate void tre ...
- 为nologin用户开一个terminal
昨天,我在设置zabbix-agent的时候,发现agent机器上的zabbix用户并不能读取某文件信息.我就想跳到zabbix用户,后来失败,发现在/etc/passwd中,zabbix被设置为 z ...
- 云服务器以及linux操作系统打开防火墙,在墙上开一个小口
在服务器运行时,需要在某个端口上开一个小口,以供外部访问 执行命令/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 8080为端口号,需要开的 ...
- java的服务是每收到一个请求就新开一个线程来处理吗?tomcat呢?
首先,服务器的实现不止有这两种方式. 先谈谈题主说的这两种服务器模型: 1.收到一个请求就处理,这个时候就不能处理新的请求,这种为阻塞 这个是单线程模型,无法并发,一个请求没处理完服务器就会阻塞,不会 ...
- qt之窗口换肤(一个qss的坑:当类属性发现变化时需要重置qss,使用rcc资源文件)
1.相关文章 Qt 资源系统qt的moc,uic,rcc命令的使用 2.概要 毕业两年了,一直使用的是qt界面库来开发程序,使用过vs08.10.13等开发工具,并安装了qt的插件,最近在做客户 ...
随机推荐
- zoom在css中的作用
zoom:1 zoom:1;属性是IE浏览器的专有属性,Firefox等其它浏览器不支持.它可以设置或检索对象的缩放比例. 兼容IE6.IE7.IE8浏览器,经常会遇到一些问题,可以使用zoom:1来 ...
- js实现文本框中内容的放大显示
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- FineUI常见问题
常见问题解答(必读) http://fineui.com/bbs/forum.php?mod=viewthread&tid=655
- 进入OS前的两步之System tick
OK,继续向操作系统迈进.由简入繁,先实现两个小功能.第一个是system tick,第二个是任务切换(PendSV).一个是操作系统的心跳,一个是操作系统的并发处理的具体实现. System tic ...
- MySql类似Oracle的dual虚拟表
在mysql里也存在和oracle里类似的dual虚拟表:官方声明纯粹是为了满足select ... from...这一习惯问题,mysql会忽略对该表的引用. 你可千万注意了: select * f ...
- Android高手速成--第四部分 开发工具及测试工具
第四部分 开发工具及测试工具 主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Json2Java根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson ...
- 去除ios系统a标签点击时的灰色背景
使用图片作为a标签的点击按钮时,当触发touchstart的时候,往往会有一个灰色的背景,想要去掉的话可以用下面这种方式 a,a:hover,a:active,a:visited,a:link,a:f ...
- 逻辑思维面试题-java后端面试-遁地龙卷风
(-1)写在前面 最近参加了一次面试,对笔试题很感兴趣,就回来百度一下.通过对这些题目的思考让我想起了建模中的关联,感觉这些题如果没接触就是从0到1,考验逻辑思维的话从1到100会更好,并且编程简易模 ...
- linux git安装及配置(包括更新)
1.在终端运行命令 sudo apt-get install git 2.查看版本号 git --version (若不是最新可更新 自选) 更新提示: sudo add-apt-repositor ...
- python3 黑板客爬虫闯关游戏(二)
第二关猜登录密码,需要用到urllib.request和urllib.parse 也很简单,给代码 import urllib.request as ur import urllib.parse as ...