在此为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的插件,最近在做客户 ...
随机推荐
- asp.net读取execl模板并填充数据,关闭进程
<head runat="server"> <title></title> <script src="Scripts/jquer ...
- web service 学习
是什么? 是一种远程调用技术,这种技术提供一些接口,这些接口实现让客户端和服务端进行通信和数据交换,并且让通信和交换与平台和开发语言无关.也可以说是提供了许多函数.客户端调用服务端的函数. 远程调用: ...
- hadoop集群安装_实战
spark1.6.2+ hadoop2.6.2 词频统计完整案例:http://blog.csdn.net/zythy/article/details/17852579 hadoop学习:http:/ ...
- (转载)JavaWeb学习总结(五十一)——邮件的发送与接收原理
博客源地址:http://www.cnblogs.com/xdp-gacl/p/4209586.html 一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电 ...
- angularjs中父,子,兄之间controller值得传递
使用angularjs,发现controller间的值传递,比较麻烦的,以后几篇文章会陆续说几种方法. 一,angularjs $broadcast $emit $on的处理思想 在一个control ...
- popoverPresentationController UIPopoverController 使用方法详解
之前iPad特有的控件,现在iPhone亦可使用. 点击按钮,弹出popOverVC. 按钮的点击事件: - (IBAction)pickOrderAction:(UIButton *)sender ...
- Retroactive priority queues
http://erikdemaine.org/papers/Retroactive_TALG/paper.pdf 明天写..大概就是通过一些结论发现这个东西其实就是往最后的集合里加入或删除一些可以被快 ...
- matlab GUI封装exe文件
学习matlab过程中,有时有些程序处理数据时老是看着代码,也会觉得疲倦,那么要试一试matlab的GUI吗?我就是这么使用matlab的GUI制作一个小程序,并且使用matlab封装成了exe文件. ...
- Python dir
1. 在python命令行交互环境下,可以用dir()函数查看当前的变量,比如: >>> dir()['__builtins__', '__doc__', '__loader__', ...
- 使用jvisualvm.exe 的Btrace插件介绍/使用教程
一.背景 在生产环境中可能经常遇到各种问题,定位问题需要获取程序运行时的数据信息,如方法参数.返回值.全局变量.堆栈信息等.为了获取这些数据信息,我们可以 通过改写代码,增加日志信息的打 ...