【BZOJ】[CTSC2008]网络管理Network-线段树套Treap

这篇博客介绍了如何使用线段树套Treap的方法解决BZOJ1146网络管理问题。内容涉及大型跨国公司通信网络的结构,路由器之间的延迟问题,以及如何处理路由器延迟时间变化和查询延迟第k大路由器的延迟时间的算法。数据范围为N, Q <= 80000,延迟时间小于10^8,且所有询问满足0 <= K <= N。" 114482045,8203982,Auto.js Pro 实现微博APP自动化操作,"['Auto js', '微博唤醒脚本', '自动化工具', '安卓模拟器', 'APP自动化']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传送门:BZOJ1146-网络管理


题意

M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门。为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络。该网络的结构由N个路由器和N-1条高速光缆组成。
每个部门都有一个专属的路由器,部门局域网内的所有机器都联向这个路由器,然后再通过这个通信子网与其他部门进行通信联络。该网络结构保证网络中的任意两个路由器之间都存在一条直接或间接路径以进行通信。 高速光缆的数据传输速度非常快,以至于利用光缆传输的延迟时间可以忽略。但是由于路由器老化,在这些路由器上进行数据交换会带来很大的延迟。而两个路由器之间的通信延迟时间则与这两个路由器通信路径上所有路由器中最大的交换延迟时间有关。作为M公司网络部门的一名实习员工,现在要求你编写一个简单的程序来监视公司的网络状况。该程序能够随时更新网络状况的变化信息(路由器数据交换延迟时间的变化),并且根据询问给出两个路由器通信路径上延迟第k大的路由器的延迟时间。【任务】 你的程序从输入文件中读入N个路由器和N-1条光缆的连接信息,每个路由器初始的数据交换延迟时间Ti,以及Q条询问(或状态改变)的信息。并依次处理这Q条询问信息,它们可能是: 1. 由于更新了设备,或者设备出现新的故障,使得某个路由器的数据交换延迟时间发生了变化。 2. 查询某两个路由器a和b之间的路径上延迟第k大的路由器的延迟时间。


数据范围

N,Q<=80000,任意一个路由器在任何时刻都满足延迟时间小于10^8。
对于所有询问满足0<=K<=N


题解

树套树,debug使人崩溃


代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
const int M=6e6+10;

int bin[20],rt[M],df[N],sz[N];
int a[N],b[N],ty[N],top[N],son[N];
int dep[N],f[N][17],ow,fp[N];
int tot,Q,n,cnt,tmp,dfn;
int head[N],to[N<<1],nxt[N<<1],t[N],g[N];
int ls[M],rs[M],v[M],s[M],w[M],rnd[M];

inline int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){
  if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
    return x*f;
}

inline void lk(int u,int v){to[++tot]&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值