尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

LG11755

LG11755
📅 发布时间:2026/6/18 15:40:26

树链剖分模板题。边权转点权的操作十分经典,用两个点中深度较大的存储边权(因为父亲唯一),然后就转化为点权的操作了。轻度卡常即可通过,比如线段树查询时写非递归版等。

时间复杂度 \(O(n \log n + q \log^2 n )\)。

#include <iostream>
#include <cstdio>
#include <vector>
#include <map>
#define N 2000010using namespace std;vector<int> G[N];
int dep[N],top[N],fa[N],siz[N],son[N],id[N],rev[N],ans1[N],ans2[N],eid[N],tot;
struct E
{int u,v;
}e[N];int n,q;struct T
{int t[N * 4];void update( int u , int l , int r , int L , int R , int x ){if( L > R ) return;if( L <= l && r <= R ){t[u] = x;return;}if( t[u] ){t[u << 1] = t[u];t[u << 1 | 1] = t[u];t[u] = 0;}int mid = ( l + r ) >> 1;if( L <= mid ) update( u << 1 , l , mid , L , R , x );if( R > mid ) update( u << 1 | 1 , mid + 1 , r , L , R , x );return;}int que( int p ){int l = 1,r = n,u = 1,mid;while( l < r ){mid = ( l + r ) >> 1;if( t[u] ){t[u << 1] = t[u];t[u << 1 | 1] = t[u];t[u] = 0;}if( p <= mid ) r = mid,u = u << 1;else l = mid + 1,u = u << 1 | 1;}return t[u];}
}tr;void upd( int u , int v , int x )
{while( top[u] != top[v] ){	if( dep[top[u]] > dep[top[v]] ) swap( u , v );tr.update( 1 , 1 , n , id[top[v]] , id[v] , x );v = fa[top[v]];}if( dep[u] > dep[v] ) swap( u , v );tr.update( 1 , 1 , n , id[u] + 1 , id[v] , x );//由于是边权,故 LCA 不属于修改范围return;
}void dfs1( int u , int f )
{fa[u] = f;dep[u] = dep[f] + 1;siz[u] = 1;for( auto v : G[u] ){if( v == f ) continue;dfs1( v , u );siz[u] += siz[v];if( siz[v] > siz[son[u]] )son[u] = v;}return; 
}void dfs2( int u , int f , int flag )
{id[u] = ++ tot;rev[tot] = u;if( flag ) top[u] = u;else top[u] = top[f];if( son[u] )dfs2( son[u] , u , 0 );for( auto v : G[u] ){if( v == f || v == son[u] ) continue;dfs2( v , u , 1 );}return;
}int read( void )
{int x = 0;char ch = getchar();while( ch < '0' || ch > '9' ) ch = getchar();while( ch >= '0' && ch <= '9' ) x = x * 10 + ch - '0',ch = getchar();return x; 
}void write( int x )
{if( x <= 9 ){putchar( x + '0' );return;}write( x / 10 );putchar( x % 10 + '0' );return;
}int main()
{int u,v;cin >> n >> q;for( int i = 1 ; i < n ; i ++ ){u = read(),v = read();e[i].u = u,e[i].v = v;G[u].push_back( v );G[v].push_back( u );}dfs1( 1 , 0 );dfs2( 1 , 0 , 1 );for( int i = 1 ; i <= q ; i ++ ){u = read(),v = read();upd( u , v , i );}for( int i = 1 ; i <= n ; i ++ )ans1[i] = tr.que( id[i] );for( int i = 1 ; i < n ; i ++ ){if( dep[e[i].u] < dep[e[i].v] ) swap( e[i].u , e[i].v );write( ans1[e[i].u] ),putchar( ' ' );}return 0;
}
我们会走到一起的。

相关新闻

  • 「LAOI-9」Update
  • ABC393F
  • ABC389F

最新新闻

  • 2026年上海防水补漏服务完全指南:从老洋房到现代公寓的漏水根治方案 - 精选优质企业推荐官
  • 2026年6月行业内头部硅芯管源头厂家推荐,PVC塑料管/60/50硅芯管/河北格栅管,硅芯管源头厂家口碑推荐 - 品牌推荐师
  • 创意导演技能:科幻风格视频
  • 专网对讲机基础工作原理解析 东北工矿林区通用通信技术科普
  • 深入解析MC68336/376微控制器:CPU32核心与集成外设实战指南
  • M68HC08电机控制SDK深度解析:从硬件抽象到实战避坑

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号