AC. 梦想

frank_c1

[NOIP 2015] 运输计划

发布于2016年05月12日 | 暂无评论 | 767阅读 | 二分,树链剖分

题目描述

公元 2044 年,人类进入了宇宙纪元。

L 国有n个星球,还有n-1条双向航道,每条航道建立在两个星球之间,这n-1条航道连通了 LL 国的所有星球。

小 P 掌管一家物流公司, 该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从u_i号星球沿最快的宇航路径飞行到v_i号星球去。显然,飞船驶过一条航道是需要时间的,对于航道j,任意飞船驶过它所花费的时间为t_j,并且任意两艘飞船之间不会产生任何干扰。

为了鼓励科技创新, L 国国王同意小 P 的物流公司参与 L 国的航道建设,即允许小P 把某一条航道改造成虫洞,飞船驶过虫洞不消耗时间。

在虫洞的建设完成前小 P 的物流公司就预接了m个运输计划。在虫洞建设完成后,这m个运输计划会同时开始,所有飞船一起出发。当这m个运输计划都完成时,小 P 的物流公司的阶段性工作就完成了。

如果小 P 可以自由选择将哪一条航道改造成虫洞, 试求出小 P 的物流公司完成阶段性工作所需要的最短时间是多少?

输入格式

第一行包括两个正整数n,m,表示 L 国中星球的数量及小 P 公司预接的运输计划的数量,星球从1n编号。

接下来n-1行描述航道的建设情况,其中第i行包含三个整数a_i,b_it_i,表示第i条双向航道修建在a_ib_i两个星球之间,任意飞船驶过它所花费的时间为t_i。数据保证1 \le a_i,b_i \le n0 \le t_i \le 1000

接下来m行描述运输计划的情况,其中第j行包含两个正整数u_jv_j,表示第j个运输计划是从u_J号星球飞往v_j号星球。数据保证1 \le u_i,v_i \le n

1 \le n,m \le 300000

输出格式

输出文件只包含一个整数,表示小 P 的物流公司完成阶段性工作所需要的最短时间。

题目解析

结清一些陈年老账……

考虑如果最终答案为ans,则所有路径长度大于ans的运输计划必有一条边被改造成虫洞,且这条边的权值w应满足\max{val_i} - w \le ans

于是就可以二分答案,转化成判定性问题。若答案为ans,则我们先对所有路径长度大于ans的运输计划求一个交,判断交集中是否存在一条边使得w \ge \max{val_i} - ans

求路径交可以采用树链剖分维护差分序列的方法,比较直观,时间复杂度O(n \log n)。还有二分答案的复杂度,故总复杂度为O(n\log n \log w)

据说本题还有O(n \log n)的做法,膜拜一下~~