BZOJ_4551_[Tjoi2016&Heoi2016]树_树剖+线段树
BZOJ_4551_[Tjoi2016&Heoi2016]树_树剖+线段树
Description
Input
Output
输出一个正整数,表示结果
Sample Input
1 2
1 3
2 4
2 5
Q 2
C 2
Q 2
Q 5
Q 3
Sample Output
2
2
1
- #include <stdio.h>
- #include <string.h>
- #include <algorithm>
- using namespace std;
- #define N 200050
- #define ls p<<1
- #define rs p<<1|1
- int c[N<<2],a[N],n,m,dep[N],fa[N],son[N],idx[N],top[N];
- int head[N],to[N<<1],nxt[N<<1],cnt,siz[N],tot,sec,d[N];
- char opt[10];
- inline void add(int u,int v) {
- to[++cnt]=v; nxt[cnt]=head[u]; head[u]=cnt;
- }
- void dfs1(int x,int y) {
- a[x]=++sec;
- d[sec]=x;
- dep[x]=dep[y]+1;
- fa[x]=y;
- siz[x]=1;
- int i;
- for(i=head[x];i;i=nxt[i]) if(to[i]!=y) {
- dfs1(to[i],x);
- siz[x]+=siz[to[i]];
- if(siz[to[i]]>siz[son[x]]) son[x]=to[i];
- }
- }
- void dfs2(int x,int t) {
- top[x]=t; idx[x]=++tot;
- int i;
- if(son[x]) dfs2(son[x],t);
- for(i=head[x];i;i=nxt[i]) if(to[i]!=fa[x]&&to[i]!=son[x]) dfs2(to[i],to[i]);
- }
- void update(int l,int r,int x,int v,int p) {
- if(l==r) {
- c[p]=v; return ;
- }
- int mid=(l+r)>>1;
- if(x<=mid) update(l,mid,x,v,ls);
- else update(mid+1,r,x,v,rs);
- c[p]=max(c[ls],c[rs]);
- }
- int qmx(int l,int r,int x,int y,int p) {
- if(x<=l&&y>=r) return c[p];
- int mid=(l+r)>>1,re=0;
- if(x<=mid) re=max(re,qmx(l,mid,x,y,ls));
- if(y>mid) re=max(re,qmx(mid+1,r,x,y,rs));
- return re;
- }
- int main() {
- scanf("%d%d",&n,&m);
- int i,x,y;
- for(i=1;i<n;i++) {
- scanf("%d%d",&x,&y);
- add(x,y);add(y,x);
- }
- dfs1(1,0);
- dfs2(1,1);
- update(1,n,idx[1],1,1);
- while(m--) {
- scanf("%s%d",opt,&x);
- if(opt[0]=='Q') {
- y=1;
- int ans=0;
- while(top[x]!=top[y]) {
- if(dep[top[x]]>dep[top[y]]) swap(x,y);
- ans=max(ans,qmx(1,n,idx[top[y]],idx[y],1));
- y=fa[top[y]];
- }
- if(dep[x]<dep[y]) swap(x,y);
- ans=max(ans,qmx(1,n,idx[y],idx[x],1));
- printf("%d\n",d[ans]);
- }else {
- update(1,n,idx[x],a[x],1);
- }
- }
- }
BZOJ_4551_[Tjoi2016&Heoi2016]树_树剖+线段树的更多相关文章
- BZOJ_3685_普通van Emde Boas树_权值线段树
BZOJ_3685_普通van Emde Boas树_权值线段树 Description 设计数据结构支持: 1 x 若x不存在,插入x 2 x 若x存在,删除x 3 输出当前最小值,若不存 ...
- 字符串(tjoi2016,heoi2016,bzoj4556)(sam(后缀自动机)+线段树合并+倍增+二分答案)
佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了 一个长为\(n\)的字符串\(s\),和\(m\)个问题.佳媛姐姐必须正确回答这\(m\)个问题, ...
- [BZOJ4552][Tjoi2016&Heoi2016]排序(二分答案+线段树)
二分答案mid,将>=mid的设为1,<mid的设为0,这样排序就变成了区间修改的操作,维护一下区间和即可 然后询问第q个位置的值,为1说明>=mid,以上 时间复杂度O(nlog2 ...
- 【BZOJ4556】[TJOI2016&HEOI2016] 字符串(后缀自动机+线段树合并+二分)
点此看题面 大致题意: 给你一个字符串\(s\),每次问你一个子串\(s[a..b]\)的所有子串和\(s[c..d]\)的最长公共前缀. 二分 首先我们可以发现一个简单性质,即要求最长公共前缀,则我 ...
- 3065: 带插入区间K小值_树套树_替罪羊树_权值线段树
经过周六一天,周一3个小时的晚自习,周二2个小时的疯狂debug,终于凭借自己切掉了这道树套树题. Code: #include <cstdio> #include <algorit ...
- BZOJ_2157_旅游_树剖+线段树
BZOJ_2157_旅游_树剖+线段树 Description Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但 ...
- BZOJ.4553.[HEOI2016&TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)
题目链接:BZOJ 洛谷 \(O(n^2)\)DP很好写,对于当前的i从之前满足条件的j中选一个最大值,\(dp[i]=d[j]+1\) for(int j=1; j<i; ++j) if(a[ ...
- BZOJ_2161_布娃娃_权值线段树
BZOJ_2161_布娃娃_权值线段树 Description 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二 代考神,这和小时候培养的良好素质是 ...
- BZOJ_2238_Mst_树剖+线段树
BZOJ_2238_Mst_树剖+线段树 Description 给出一个N个点M条边的无向带权图,以及Q个询问,每次询问在图中删掉一条边后图的最小生成树.(各询问间独立,每次询问不对之后的询问产生影 ...
随机推荐
- 关于在vim中的查找和替换
1,查找 在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车. Vim会跳转到第一个匹配.按下n查找下一个,按下N查找上一个. Vim查找支持正则表达式,例如/vim$匹配行尾的 ...
- LindDotNetCore~框架介绍及特色功能(有点springboot的意思)
LindDotNetCore模块介绍 大叔博客 LindDotNetCore相关模块介绍 [x] 全局都是依赖DI [x] 消息队列 [x] NoSql [x] Caching [x] 仓储 [x] ...
- neo4j-rest-client使用摘要
1.使用它的原因,与django搭配的最好的neomodel目前只支持到v2.2,我已给官方发了issue,官方也回复了,马上修改并发布(老外对开源项目的负责态度让人感动) 2.这个库的文档中大概描述 ...
- MySQL 的索引优化
索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本.MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的.My ...
- javascript DOM编程艺术(检测与性能优化)
一.对象检测(是否支持js方法):只有支持了该方法才可调用 if(!getElementById || getElementsByTagName){ return false; } 二.性能考滤 1. ...
- .net Core 微服务框架 surging 使用
surging 是一个分布式微服务框架,提供高性能RPC远程服务调用,采用Zookeeper.Consul作为surging服务的注册中心, 集成了哈希,随机,轮询作为负载均衡的算法,RPC集成采用的 ...
- Python_网页爬虫
import sys import multiprocessing import re import os import urllib.request as lib def craw_links( u ...
- Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
一.Bean的Scope Scope描述的是Spring容器如何新建Bean实例的.Spring的Scope有以下几种,通过@Scope注解来实现. (1)Singleton:一个Spring容器中只 ...
- [ 搭建Redis本地服务器实践系列一 ] :图解CentOS7安装Redis
上一章 [ 搭建Redis本地服务器实践系列 ] :序言 作为开场白介绍了下为什么要写这个系列,从这个章节我们就开始真正的进入正题,开始搭建我们本地的Redis服务器.那么关于Redis的基本概念,什 ...
- PHP后端之验证码
PHP后端之验证码 前言: 打算写一些实际开发中遇到的东西.我这个人记性不好,觉得记下来,以后就算想找,也能找得到. PHP,可能很长一段时间都不会使用了.所以还是留一些记录. 另外还有一些服务器架设 ...