AC日记——#2054. 「TJOI / HEOI2016」树
思路:
线段树;
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 100005
#define maxm maxn<<1
#define maxtree maxn<<2
int n,head[maxn],E[maxm],V[maxm],cnt,m,deep[maxn],li[maxn],ri[maxn];
int val[maxtree],L[maxtree],R[maxtree],mid[maxtree],key[maxtree],tmp1,tmp2;
bool if_[maxtree];
inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
}
void dfs(int now,int fa)
{
deep[now]=deep[fa]+,li[now]=++cnt;
for(int i=head[now];i;i=E[i])
{
if(V[i]==fa) continue;
dfs(V[i],now);
}
ri[now]=cnt;
}
void build(int now,int l,int r)
{
L[now]=l,R[now]=r;
if(l==r)
{
if_[now]=true,val[now]=,key[now]=;
return;
}
mid[now]=l+r>>;
build(now<<,l,mid[now]);
build(now<<|,mid[now]+,r);
}
void change(int now,int l,int r,int va,int ke)
{
if(L[now]>=l&&R[now]<=r)
{
if(if_[now])
{
if(ke>key[now])key[now]=ke,val[now]=va;
}
else if_[now]=true,key[now]=ke,val[now]=va;
return;
}
if(l<=mid[now]) change(now<<,l,r,va,ke);
if(r>mid[now]) change(now<<|,l,r,va,ke);
}
void query(int now,int to)
{
if(if_[now]&&key[now]>tmp2) tmp1=val[now],tmp2=key[now];
if(L[now]==R[now]) return;
if(to<=mid[now]) query(now<<,to);
else query(now<<|,to);
}
int main()
{
in(n),in(m);int u,v;
for(int i=;i<n;i++)
{
in(u),in(v);
E[++cnt]=head[u],V[cnt]=v,head[u]=cnt;
E[++cnt]=head[v],V[cnt]=u,head[v]=cnt;
}
cnt=,dfs(,),build(,,n);
char op[];
for(int i=;i<=m;i++)
{
scanf("%s",op),in(u);
if(op[]=='C') change(,li[u],ri[u],u,deep[u]);
else tmp1=,tmp2=,query(,li[u]),printf("%d\n",tmp1);
}
return ;
}
AC日记——#2054. 「TJOI / HEOI2016」树的更多相关文章
- loj#2054. 「TJOI / HEOI2016」树
题目链接 loj#2054. 「TJOI / HEOI2016」树 题解 每次标记覆盖整棵字数,子树维护对于标记深度取max dfs序+线段树维护一下 代码 #include<cstdio> ...
- AC日记——#2057. 「TJOI / HEOI2016」游戏 LOJ
#2057. 「TJOI / HEOI2016」游戏 思路: 最大流: 代码: #include <cstdio> #include <cstring> #include &l ...
- 【LOJ】#2054. 「TJOI / HEOI2016」树
题解 一写过一交A的水题 只要求一个dfs序,新加一个标记在子树所在的区间上覆盖上该点,维护深度最大的答案 代码 #include <bits/stdc++.h> #define ente ...
- 「TJOI / HEOI2016」字符串
「TJOI / HEOI2016」字符串 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为 \(n\) 的字符串 \(s\),和 ...
- loj #2055. 「TJOI / HEOI2016」排序
#2055. 「TJOI / HEOI2016」排序 题目描述 在 2016 年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他. 这个 ...
- loj2058 「TJOI / HEOI2016」求和 NTT
loj2058 「TJOI / HEOI2016」求和 NTT 链接 loj 思路 \[S(i,j)=\frac{1}{j!}\sum\limits_{k=0}^{j}(-1)^{k}C_{j}^{k ...
- loj#2059. 「TJOI / HEOI2016」字符串 sam+线段树合并+倍增
题意:给你一个子串,m次询问,每次给你abcd,问你子串sa-b的所有子串和子串sc-d的最长公共前缀是多长 题解:首先要求两个子串的最长公共前缀就是把反过来插入变成最长公共后缀,两个节点在paren ...
- 【LOJ】#2059. 「TJOI / HEOI2016」字符串
题解 我们冷静一下,先画一棵后缀树 然后发现我们要给c和d这一段区间在[a,b]这一段开头的串里找lcp 而lcp呢,就是c点的祖先的到根的一段,假如这个祖先的子树里有[a,b - dis[u] + ...
- 【LOJ】#2056. 「TJOI / HEOI2016」序列
题解 这个我们处理出来每一位能变化到的最大值和最小值,包括自身 然后我们发现 \(f[i] = max(f[i],f[j] + 1) (mx[j] <= a[i] && a[j] ...
随机推荐
- 玲珑学院oj 1152 概率dp
1152 - Expected value of the expression Time Limit:2s Memory Limit:128MByte Submissions:128Solved:63 ...
- 洛谷P1558 色板游戏
题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, ... L.现在色板上只有 ...
- C++单例模式设计与实现
C++单例模式主要用途就是整个程序中只实例化一个对象,之后获取到的都是该对象本身进行处理问题. 单例模式一般都是在函数中采用局部静态变量完成的,因为局部的静态变量生命周期是随着程序的生命周期 一起结束 ...
- Python urllib urlretrieve函数解析
Python urllib urlretrieve函数解析 利用urllib.request.urlretrieve函数下载文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Ur ...
- mysql \G
mysql 命令区分大小写.ego (\G) Send command to mysql server, display result vertically. go (\g) ...
- HDU 2920 分块底数优化 暴力
其实和昨天写的那道水题是一样的,注意爆LL $1<=n,k<=1e9$,$\sum\limits_{i=1}^{n}(k \mod i) = nk - \sum\limits_{i=1}^ ...
- 提高效率!15款最好的 Bug 跟踪应用程序
当涉及到开发项目时,其中比较重要的事情是它需要某种形式的错误和问题跟踪工具来发现和解决问题,否则会浪费大量的时间. 此外,你总是要标签应用来标示那些悬而未决的问题,而这种分期执行的项目进度将帮助您 ...
- javascript在IE下不能用 trim函数解决方法
javascript 的trim 函数在firefox 下面使用没有问题 <script language="javascript"> var test1 = &quo ...
- Spring Session加Redis
session是一个非常常见的概念.session的作用是为了辅助http协议,因为http是本身是一个无状态协议.为了记录用户的状态,session机制就应运而生了.同时session也是一个非常老 ...
- 使用infinite-scroll实现Ghost博文列表的滚动加载
Ghost博客系统默认提供的博文列表为传统的翻页方式(通过点击上一页.下一页等按钮来切换),随着移动客户端的发展,瀑布流式的滚动加载方式得到广泛应用,有效地提高了用户浏览信息的流畅度.下面详述如何通过 ...