【清华集训2016】数据交互
题目描述 一个简单的网络系统可以被描述成一棵无根树。每个节点为一个服务器。连接服务器与服务器的数据 线则看做一 条树边。两个服务器进行数据交互时,数据会经过连接这两个服务器的路径上的所有服务 器(包括这两个服务器 自身)。每个数据交互请求都有一个非负的重要度,越重要的请求显然需要得 到越高的优先处理权。此外,如果 在某一个时刻存在一条非常重要(可以看作重要度无穷大)、且数 据量巨大的交互请求,则所有被该交互经过的 服务器都会优先处理这条交互并阻塞,从而导致其他通 过这些服务器的交互出现延迟。现在,你作为一个网络系 统的管理员,要监控整个系统的运行状态。 系统的运行也很简单,在每一个时刻,只有可能出现下列二种事件中 的一种: 1、在某两个服务器之间出现一条新的数据交互请求; 2、某个数据交互请求结束; 我们假设这些事件中的交互请求的数据量都足够小。你的任务是在每一个时刻的事件结束后,求出: 如果突然出现一条非常重要、且数据量巨大的交互请求 那么因其造成延迟的数据交互请求的重要度之和最大可能是多少? 题解 题目是要求:动态维护一些链的集合,每次操作后都要找出一条链,使得和它相交的所有链的权值和最大。 假设我们已经选择了一条链xy,那么我们可以把和它有交的所有链分为三种类型。 1、 LCA(x',y')=LCA(x,y) 这时我们应当在 LCA(x,y) 处贡献一次。 2、 deep