题目链接

模板题都错了这么多次。。

//边权赋到点上 树剖模板
//注意LCA、链的顶端不能统计到答案!
#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
const int N=1e5+5; int n,m,cnt,ep[N],W[N],id[N],sz[N],dep[N],son[N],fa[N],top[N],Enum,H[N],to[N<<1],nxt[N<<1],val[N<<1];
struct Seg_Tree
{
int A[N],mx[N<<2];
inline void PushUp(int rt) {mx[rt]=std::max(mx[rt<<1],mx[rt<<1|1]);}
void Build(int l,int r,int rt)
{
if(l==r) mx[rt]=A[l];
else
{
int m=l+r>>1;
Build(lson), Build(rson);
PushUp(rt);
}
}
void Modify(int l,int r,int rt,int p,int v)
{
if(l==r) mx[rt]=v;
else
{
int m=l+r>>1;
if(p<=m) Modify(lson,p,v);
else Modify(rson,p,v);
PushUp(rt);
}
}
int Query_Max(int l,int r,int rt,int L,int R)
{
if(L<=l && r<=R) return mx[rt];
int m=l+r>>1;
if(L<=m)
if(m<R) return std::max(Query_Max(lson,L,R),Query_Max(rson,L,R));
else return Query_Max(lson,L,R);
return Query_Max(rson,L,R);
}
}t;
inline int read()
{
int now=0,f=1;register char c=gc();
for(;!isdigit(c);c=gc()) if(c=='-') f=-1;
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now*f;
}
inline void AddEdge(int u,int v,int w)
{
to[++Enum]=v, nxt[Enum]=H[u], val[Enum]=w, H[u]=Enum;
to[++Enum]=u, nxt[Enum]=H[v], val[Enum]=w, H[v]=Enum;
}
void DFS1(int x)
{
int mx=0; sz[x]=1;
for(int v,i=H[x]; i; i=nxt[i])
if((v=to[i])!=fa[x])
{
fa[v]=x, dep[v]=dep[x]+1, DFS1(v), sz[x]+=sz[v];
W[v]=val[i], ep[i>>1]=v;
if(mx<sz[v]) mx=sz[v], son[x]=v;
}
}
void DFS2(int x,int tp)
{
id[x]=++cnt, t.A[cnt]=W[x], top[x]=tp;
if(son[x])
{
DFS2(son[x],tp);
for(int i=H[x]; i; i=nxt[i])
if(to[i]!=fa[x] && to[i]!=son[x])
DFS2(to[i],to[i]);
}
}
int Query_Chain(int x,int y)
{
int res=0;
while(top[x]!=top[y])//while(top[x]^top[y])
{
if(dep[top[x]]<dep[top[y]]) std::swap(x,y);
res=std::max(res,t.Query_Max(1,n,1,id[top[x]],id[x])), x=fa[top[x]];
}
if(x==y) return res;//LCA不统计入答案!
if(dep[x]>dep[y]) std::swap(x,y);
return std::max(res,t.Query_Max(1,n,1,id[son[x]]/*not id[x]!*/,id[y]));
} int main()
{
Enum=1;
n=read();
for(int u,v,w,i=1; i<n; ++i)
u=read(),v=read(),w=read(),AddEdge(u,v,w);
DFS1(1), DFS2(1,1);
t.Build(1,n,1);
char opt[7]; int x,y;
while(scanf("%s",opt),opt[0]!='D')
{
x=read(),y=read();
if(opt[0]=='C') t.Modify(1,n,1,id[ep[x]],y);
else printf("%d\n",Query_Chain(x,y));;
}
return 0;
}

洛谷.4114.Qtree1(树链剖分)的更多相关文章

  1. 洛谷 P4114 Qtree1 树链剖分

    目录 题面 题目链接 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例: 输出样例: 说明 说明 思路 Change Query AC代码 总结 题面 题目链接 P4114 Qt ...

  2. 洛谷P3979 遥远的国度 树链剖分+分类讨论

    题意:给出一棵树,这棵树每个点有权值,然后有3种操作.操作一:修改树根为rt,操作二:修改u到v路径上点权值为w,操作三:询问以rt为根x子树的最小权值. 解法:如果没有修改树根操作那么这题就是树链剖 ...

  3. [洛谷P3384] [模板] 树链剖分

    题目传送门 显然是一道模板题. 然而索引出现了错误,狂wa不止. 感谢神犇Dr_J指正.%%%orz. 建线段树的时候,第44行. 把sum[p]=bv[pos[l]]%mod;打成了sum[p]=b ...

  4. 洛谷3384&bzoj1036树链剖分

    值得注意的是: 一个点的子树是存在一起的...也就是说我们修改子树的时候只用... /********************************************************* ...

  5. Qtree1 - 树链剖分

    树剖裸题?(复习练练手) // luogu-judger-enable-o2 #include <bits/stdc++.h> using namespace std; ],size[], ...

  6. 洛谷 P3384 【模板】树链剖分

    树链剖分 将一棵树的每个节点到它所有子节点中子树和(所包含的点的个数)最大的那个子节点的这条边标记为"重边". 将其他的边标记为"轻边". 若果一个非根节点的子 ...

  7. 树链剖分详解(洛谷模板 P3384)

    洛谷·[模板]树链剖分 写在前面 首先,在学树链剖分之前最好先把 LCA.树形DP.DFS序 这三个知识点学了 emm还有必备的 链式前向星.线段树 也要先学了. 如果这三个知识点没掌握好的话,树链剖 ...

  8. ⌈洛谷1505⌋⌈BZOJ2157⌋⌈国家集训队⌋旅游【树链剖分】

    题目链接 [洛谷] [BZOJ] 题目描述 Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但又为了节约成本,T ...

  9. BZOJ2243 洛谷2486 [SDOI2011]染色 树链剖分

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2243 题目传送门 - 洛谷2486 题意概括 一棵树,共n个节点. 让你支持以下两种操作,共m次操 ...

随机推荐

  1. kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 【转】

    转自:http://blog.chinaunix.net/uid-26349264-id-4455634.html 目录 kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 ...

  2. 汇编语言转换成c语言,或者汇编语言转换成golang的汇编,c语言转换成golang的方法

    https://github.com/minio/c2goasm http://microapl.com/asm2c/index.html               收费的 https://gith ...

  3. python高级编程读书笔记(一)

    python高级编程读书笔记(一) python 高级编程读书笔记,记录一下基础和高级用法 python2和python3兼容处理 使用sys模块使程序python2和python3兼容 import ...

  4. lvs持久连接及防火墙标记实现多端口绑定服务

    lvs持久连接及防火墙标记实现多端口绑定服务 LVS持久连接: PCC:将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS: PPC:将来自于一个客户端发往某VIP的某端口的所有请求统统定向 ...

  5. Ex 6_5棋子放置问题_第八次作业

    题目貌似有问题 (b) 子问题定义: 设maxValue[i][j]为棋盘的前i行中最后一行为i时第i行按照第j种放置方式放置时得到的最大覆盖值,comp[i][j]为第i种放置方式与第j种放置方式是 ...

  6. Python-CSS 基础

    css入门 一.架构分析 页面 => div的层级结构 => 具有采用哪些功能标签显示内容 结构层 > 位置层(布局层) > 内容层 二.css引入 - 行间式 <div ...

  7. SpringMVC(1):Web MVC简介

    原文出处: 张开涛 Web MVC简介 1.1.Web开发中的请求-响应模型: 在Web世界里,具体步骤如下: 1.  Web浏览器(如IE)发起请求,如访问 2.  Web服务器(如Tomcat)接 ...

  8. abstract class 和 interface 区别

    本文出自与:heipai:tsg666 含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象.含有 abstract 方法的类必须定义为 abstract ...

  9. wpf Assembly.LoadFile dll GetType 反射 抛异常 不具有由 URI 识别的资源。

    public static void LoadViewFromUri(this Window window, string baseUri) { try { var resourceLocater = ...

  10. composer 安装依赖缓慢,查看 composer 的详细执行日志

    在 windows WSL 上安装 composer 依赖 composer install 发现执行异常缓慢,怀疑没有走国内的镜像,而是直接访问的 github. 需要能看到 composer 的执 ...