bzoj2002(lct模板)
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<cmath>
- #include<algorithm>
- using namespace std;
- const int maxn=;
- struct node{
- int ls,rs,fa,is_root;
- }tr[maxn];
- int n,m,siz[maxn],k[maxn];
- void update(int x){
- siz[x]=;
- if(tr[x].ls)siz[x]+=siz[tr[x].ls];
- if(tr[x].rs)siz[x]+=siz[tr[x].rs];
- }
- void rx(int x){
- int y=tr[x].fa,z=tr[y].fa;
- tr[y].ls=tr[x].rs;
- if(tr[x].rs)tr[tr[x].rs].fa=y;
- tr[x].rs=y;tr[y].fa=x;
- tr[x].fa=z;
- if(z&&!tr[y].is_root){//注意这句判断,辅助树之间的边是单向的;
- if(tr[z].ls==y)tr[z].ls=x;else tr[z].rs=x;
- }
- if(tr[y].is_root)tr[x].is_root=,tr[y].is_root=;
- update(y);update(x);
- }
- void lx(int x){
- int y=tr[x].fa,z=tr[y].fa;
- tr[y].rs=tr[x].ls;
- if(tr[x].ls)tr[tr[x].ls].fa=y;
- tr[x].ls=y;tr[y].fa=x;
- tr[x].fa=z;
- if(z&&!tr[y].is_root){
- if(tr[z].ls==y)tr[z].ls=x;else tr[z].rs=x;
- }
- if(tr[y].is_root)tr[x].is_root=,tr[y].is_root=;
- update(y);update(x);
- }
- void splay(int x){
- while(!tr[x].is_root){
- int y=tr[x].fa,z=tr[y].fa;
- if(tr[y].is_root){if(tr[y].ls==x)rx(x);else lx(x);}
- else{
- if(tr[z].ls==y&&tr[y].ls==x){rx(y);rx(x);}
- else if(tr[z].ls==y&&tr[y].rs==x){lx(x);rx(x);}
- else if(tr[z].rs==y&&tr[y].ls==x){rx(x);lx(x);}
- else{lx(y);lx(x);}
- }
- }
- }
- void ace(int x){
- int y=;
- do{
- splay(x);
- tr[tr[x].rs].is_root=;
- tr[tr[x].rs=y].is_root=;
- update(x);
- x=tr[y=x].fa;
- }while(x);
- }
- void link(int u,int v){//虽然说是link,但也包含和原来的断开然后和新的连上的两个过程
- if(v>n)v=;
- ace(u);splay(u);
- tr[tr[u].ls].is_root=;
- tr[tr[u].ls].fa=;tr[u].ls=;
- tr[u].fa=v;update(u);
- }
- int query(int x){
- ace(x);splay(x);
- return siz[tr[x].ls]+;
- }
- int main(){
- scanf("%d",&n);
- for(int i=;i<=n;++i){
- tr[i].is_root=siz[i]=;
- tr[i].fa=tr[i].ls=tr[i].rs=;
- }
- for(int i=;i<=n;++i){
- scanf("%d",&k[i]);
- link(i,i+k[i]);
- }
- scanf("%d",&m);
- int op,pos,cha;
- for(int i=;i<=m;++i){
- scanf("%d%d",&op,&pos);
- if(op==)printf("%d\n",query(pos+));
- else{
- scanf("%d",&cha);
- link(pos+,pos+cha+);
- }
- }
- //system("pause");
- return ;
- }
bzoj2002(lct模板)的更多相关文章
- BZOJ2002 & LCT模板(分块不会搞)
题意: 看题. 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿 着一条直线摆上n个装置,每个装置设定初 ...
- LCT模板
之前一直用的LCT模板,因为其实个人对LCT和Splay不是很熟,所以用起来总觉得略略的坑爹,过了一段时间就忘了,但事实上很多裸的LCT要改的东西是不多的,所以今天写了些注释,以后可能套起模板来会得心 ...
- LCT 模板及套路总结
这一个月貌似已经考了无数次\(LCT\)了..... 保险起见还是来一发总结吧..... A. LCT 模板 \(LCT\) 是由大名鼎鼎的 \(Tarjan\) 老爷发明的. 主要是用来维护树上路径 ...
- [洛谷P1501] [国家集训队]Tree II(LCT模板)
传送门 这是一道LCT的板子题,说白了就是在LCT上支持线段树2的操作. 所以我只是来存一个板子,并不会讲什么(再说我也不会,只能误人子弟2333). 不过代码里的注释可以参考一下. Code #in ...
- LuoguP3690 【模板】Link Cut Tree (动态树) LCT模板
P3690 [模板]Link Cut Tree (动态树) 题目背景 动态树 题目描述 给定n个点以及每个点的权值,要你处理接下来的m个操作.操作有4种.操作从0到3编号.点从1到n编号. 0:后接两 ...
- bzoj2049-洞穴勘测(动态树lct模板题)
Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好 ...
- Luogu 3690 LCT - 模板
推荐几篇比较好的博客: FlashHu 的 讲解比较好 : 传送门 Candy 的 代码~ : 传送门 以及神犇Angel_Kitty的 学习笔记: 传送门 Code V 模板 #include< ...
- BZOJ 1180 / 2843 LCT模板题_双倍经验
一大早上到机房想先拍一下模板,热热身. 结果....对照着染色敲的 LCT 竟然死活也调不过去(你说我抄都能抄错) 干脆自己重新敲了一遍,10min就敲完了....... 还是要相信自己 Code: ...
- BZOJ3282: Tree (LCT模板)
Description 给定N个点以及每个点的权值,要你处理接下来的M个操作. 操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和 ...
随机推荐
- maven工程的拆分与聚合
1.创建父工程: 首先创建maven Project: 点击next,进入下一个页面,勾选上create a simple project: 点击next,进入下一页面,在这里与创建普通maven工程 ...
- linux C程序中获取shell脚本输出(如获取system命令输出)
转载自 http://blog.csdn.net/hjxhjh/article/details/7909518 1. 前言 Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些 ...
- 小程序41028 form_id无效
如果参数都没有问题的话,那么我的问题来了,你是发给用户自己么?如果不是,那就找到原因了,必须发给本人才可以...我淌过无数条坑,这个坑我服了...官方文档上写的不是很清楚
- 7.Mysql存储引擎
7.表类型(存储引擎)的选择7.1 Mysql存储引擎概述 mysql支持插件式存储引擎,即存储引擎以插件形式存在于mysql库中. mysql支持的存储引擎包括:MyISAM.InnoDB.BDB. ...
- hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 题意不难理解,当x小于10的时候,数列f(x)=x,当x大于等于10的时候f(x) = a0 * ...
- 简单选择排序(js版)
简单选择排序 基本思想:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换.(废话不多说,先看代码). function SelectSort(arr){ var ...
- Jquery中的$.cookie()方法
jquery.cookie中的操作: jquery.cookie.js是一个基于jquery的插件,点击下载! 创建一个会话cookie: $.cookie(‘cookieName’,'cookieV ...
- Vue单页面应用
单页面应用指一个系统只加载一次资源,然后下面的操作交互.数据交互是通过router.ajax来进 行,页面并没有刷新:<1>在vue搭建的环境里面怎么有没有公用的css和js? ...
- java基本知识归集
类中可以有几种东西:属性,方法,构造器,初始化块 new创建对象时, 1.类属性和类初始化块分配空间. 2.执行默认初始化 如有父类,先为父类执行父类自己的1和2步骤,再执行上面的1和2. 一个类执行 ...
- windows下忘记mysql的root密码
1.停止mysql 2.命令行启动mysqlmysqld --defaults-file="c:\mysql\mysql server 5.1\my.ini" --console ...