首页 技术 正文
技术 2022年11月19日
0 收藏 788 点赞 3,071 浏览 1556 个字

简单题,主要为了练手。

 #include <cstdio>
#include <iostream>
#define maxn 100010
using namespace std; namespace L {
int pnt[maxn], pre[maxn], son[maxn][], rtg[maxn], val[maxn], mxv[maxn]; inline void update( int nd ) {
mxv[nd] = max( val[nd], max(mxv[son[nd][]],mxv[son[nd][]]) );
}
void rotate( int nd, int d ) {
int p = pre[nd];
int s = son[nd][!d];
int ss = son[s][d];
son[nd][!d] = ss;
son[s][d] = nd;
if( p ) son[p][ nd==son[p][] ] = s;
else pnt[s] = pnt[nd];
pre[nd] = s;
pre[ss] = nd;
pre[s] = p;
update(nd);
update(s);
}
void pushdown( int nd ) {
if( rtg[nd] ) {
int &ls=son[nd][], &rs=son[nd][];
swap(ls,rs);
rtg[ls] ^= ;
rtg[rs] ^= ;
rtg[nd] = ;
}
}
void bigpush( int nd ) {
if( pre[nd] ) bigpush(pre[nd]);
pushdown(nd);
}
void splay( int nd, int top= ) {
bigpush(nd);
while( pre[nd]!=top ) {
int p = pre[nd];
int nl = nd==son[p][];
if( pre[p]==top ) {
rotate( p, nl );
} else {
int pp = pre[p];
int pl = p==son[pp][];
if( nl==pl ) {
rotate( pp, pl );
rotate( p, nl );
} else {
rotate( p, nl );
rotate( pp, pl );
}
}
}
}
void access( int nd ) {
int u = nd;
int v = ;
while( u ) {
splay(u);
int s = son[u][];
pre[s] = ;
pnt[s] = u;
pre[v] = u;
son[u][] = v;
update(u);
v = u;
u = pnt[u];
}
splay(nd);
}
void init( int n ) {
for( int i=; i<=n; i++ )
pnt[i] = pre[i] = son[i][] = son[i][]
= rtg[i] = val[i] = mxv[i] = ;
}
void makeroot( int nd ) {
access(nd);
rtg[nd] ^= ;
}
void link( int u, int v ) {
makeroot(u);
makeroot(v);
pnt[u] = v;
}
void inc_val( int nd, int w ) {
splay( nd );
val[nd] += w;
update( nd );
}
int qu_max( int u, int v ) {
makeroot(u);
access(v);
return max( val[v], mxv[son[v][]] );
}
}; int n, q; int main() {
scanf( "%d", &n );
L::init(n);
for( int i=,u,v; i<=n; i++ ) {
scanf( "%d%d", &u, &v );
L::link(u,v);
}
scanf( "%d", &q );
while( q-- ) {
char ch[];
int u, v, w;
scanf( "%s", ch );
if( ch[]=='I' ) {
scanf( "%d%d", &u, &w );
L::inc_val(u,w);
} else {
scanf( "%d%d", &u, &v );
printf( "%d\n", L::qu_max(u,v) );
}
}
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,022
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,513
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,359
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,142
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,773
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,851