2157

思路:

  LCT;

代码:

#include <bits/stdc++.h>
using namespace std;
#define maxn 400005
#define INF 0x3f3f3f3f
int n,val[maxn],sum[maxn],Max[maxn],Min[maxn],ch[maxn][];
int rev[maxn],flag[maxn],f[maxn],top,st[maxn],m,cur[maxn],id;
inline void in(int &now)
{
int if_z=;now=;
char Cget=getchar();
while(Cget>''||Cget<'')
{
if(Cget=='-') if_z=-;
Cget=getchar();
}
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
now*=if_z;
}
void updata(int now)
{
int l=ch[now][],r=ch[now][];
Max[now]=max(Max[l],Max[r]);
Min[now]=min(Min[l],Min[r]);
if(now>n) Max[now]=max(Max[now],val[now]);
if(now>n) Min[now]=min(Min[now],val[now]);
sum[now]=sum[l]+sum[r]+val[now];
}
void rever(int now)
{
sum[now]=-sum[now];
val[now]=-val[now];
swap(Max[now],Min[now]);
Min[now]=-Min[now];
Max[now]=-Max[now];
flag[now]^=;
}
void pushdown(int now)
{
int l=ch[now][],r=ch[now][];
if(flag[now])
{
flag[now]=;
if(l) rever(l);
if(r) rever(r);
}
if(rev[now])
{
rev[now]^=,rev[l]^=,rev[r]^=;
swap(ch[now][],ch[now][]);
}
}
bool isroot(int now)
{
return (ch[f[now]][]!=now)&&(ch[f[now]][]!=now);
}
void rotate(int &now)
{
int fa=f[now],ffa=f[fa],l,r;
if(ch[fa][]==now) l=;else l=;r=l^;
if(!isroot(fa))
{
if(ch[ffa][]==fa) ch[ffa][]=now;
else ch[ffa][]=now;
}
f[now]=ffa,f[fa]=now,f[ch[now][r]]=fa;
ch[fa][l]=ch[now][r],ch[now][r]=fa;
updata(fa),updata(now);
}
void splay(int now)
{
top=;st[++top]=now;
for(int i=now;!isroot(i);i=f[i]) st[++top]=f[i];
while(top) pushdown(st[top--]);
while(!isroot(now))
{
int fa=f[now],ffa=f[fa];
if(!isroot(fa))
{
if(ch[fa][]==now^ch[ffa][]==fa) rotate(now);
else rotate(fa);
}
rotate(now);
}
}
void access(int now)
{
for(int t=;now;t=now,now=f[now]) splay(now),ch[now][]=t,updata(now);
}
void makeroot(int now)
{
access(now);
splay(now);
rev[now]^=;
}
void split(int x,int y)
{
makeroot(x);
access(y);
splay(y);
}
void link(int x,int y)
{
makeroot(x),f[x]=y;
}
int main()
{
freopen("nt2011_travel.in","r",stdin);
freopen("nt2011_travel.out","w",stdout);
in(n);
for(int i=;i<=n;i++) Max[i]=-INF,Min[i]=INF;
int u,v,w;id=n;
for(int i=;i<n;i++)
{
in(u),in(v),in(w),cur[i]=++id;
link(u+,id),link(v+,id);
val[id]=sum[id]=Max[id]=Min[id]=w;
}
in(m);
char ch[];
while(m--)
{
scanf("%s",ch),in(u),in(v);
if(ch[]=='C') splay(cur[u]),val[cur[u]]=v,updata(cur[u]);
else if(ch[]=='N') split(u+,v+),rever(v+);
else if(ch[]=='S') split(u+,v+),printf("%d\n",sum[v+]);
else if(ch[]=='A') split(u+,v+),printf("%d\n",Max[v+]);
else split(u+,v+),printf("%d\n",Min[v+]);
}
return ;
}

AC日记——旅游 bzoj 2157的更多相关文章

  1. AC日记——dispatching bzoj 2809

    2809: [Apio2012]dispatching Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3290  Solved: 1740[Submi ...

  2. AC日记——codevs1688求逆序对

    AC日记--codevs1688求逆序对 锵炬 掭约芴巷 枷锤霍蚣 蟠道初盛 到被他尽情地踩在脚下蹂躏心中就无比的兴奋他是怎么都 ㄥ|囿楣 定要将他剁成肉泥.挫骨扬灰跟随着戴爷这么多年刁梅生 圃鳋 ...

  3. BZOJ 2157: 旅游( 树链剖分 )

    树链剖分.. 样例太大了根本没法调...顺便把数据生成器放上来 -------------------------------------------------------------------- ...

  4. bzoj 2157: 旅游 (LCT 边权)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2157 题面; 2157: 旅游 Time Limit: 10 Sec  Memory Lim ...

  5. BZOJ 2157: 旅游

    2157: 旅游 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1347  Solved: 619[Submit][Status][Discuss] ...

  6. 【刷题】BZOJ 2157 旅游

    Description Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间 ...

  7. BZOJ 2157 旅游(动态树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2157 [题目大意] 支持修改边,链上查询最大值最小值总和,以及链上求相反数 [题解] ...

  8. BZOJ 2157 旅游(树链剖分+线段树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2157 [题目大意] 支持修改边,链上查询最大值最小值总和,以及链上求相反数 [题解] ...

  9. AC日记——[Noi2011]阿狸的打字机 bzoj 2434

    2434 思路: 构建ac自动机: 抽离fail树: 根据字符串建立主席树: 在线处理询问: 询问x在y中出现多少次,等同于y有多少字母的fail能走到x: 1a,hahahahah: 代码: #in ...

随机推荐

  1. hive executeTask被interrupt处理

    异常信息如下: java.io.IOException: Failed on local exception: java.nio.channels.ClosedByInterruptException ...

  2. idea 创建多模块时模块类无法引入

    我的原因是类的位置方的不对,由于刚搭建的项目,本来只想做个测试,就直接在java下创建类,然而这居然是个深坑,模块引入了也无法引入这个模块的类. 解决方法:创建com.***.***包后的类可以正常引 ...

  3. SqlDataAdapter 用法详解

    SqlCommand是sql命令,执行后通过sqlDataAdapter返回填入DataSet SqlDataAdapter   有不同的构造函数, SqlDataAdapter(SqlCommand ...

  4. html 5 新特性

    现在html 5技术是最新的html标准,掌握html 5已经变得非常重要,以下是我查看相关资料后对html 5 的新特性的总结,方便大家对比学习.html 5的新特性1.取消了一些过时的html 4 ...

  5. PHP把数据库数据导入Excel

    <?php function xlsBOF() { echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); return; ...

  6. How GitLab uses Unicorn and unicorn-worker-killer

    GitLab uses Unicorn, a pre-forking Ruby web server, to handle web requests (web browsers and Git HTT ...

  7. Html5学习1(Html属性、Html CSS:)

    Html属性 1.Html要求使用小写属性. Html标题 1.确保将Html标题标签只用于标题.不要仅仅为了生成粗体或大号的文本而使用标题. 2.<hr>标签在Html页面中创建水平线, ...

  8. bzoj 1006 MCS算法

    根据陈丹琪的论文弦图与区间图,求出弦图的完美消除序列之后,反向给每个点染可以染的最小的颜色,这样可以使用最少的颜色染色,染色的方案即为队伍数. 那么我们需要求该图的完美消除序列,使用MCS算法,从后向 ...

  9. 子div设置margin-top使得父div也跟着向下移动

    之前在写网页的时候,发现一个小问题,就是子div设置margin-top的时候,父的div也会跟着向下移动.我用代码和图描述一下问题: <span style="font-size:1 ...

  10. hdu 1395 2^x mod n = 1(暴力题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1395 2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Oth ...