题意:

给定一个 \(n\) 个点的树,每条边有权值 \(t\) 和 \(c\)。一条路径的权值为所经过节点的 \(\max(c)\)。

每个点有权值 \(e\)。

给出 \(q\) 个询问,每次询问给定起点 \(x\) 和限制 \(v\),求一条简单路径满足路径上所有边的 \(t\) 都大于等于 \(v\),且终点的点权最大,在这个基础上这条路径的权值最大。求这个最大点权和最大路径权值。

首先考虑离线,把询问按 \(v\) 从大到小排序,把边按 \(t\) 从大到小排序,类似双指针,就可以去掉这个限制。

若 \(e\) 互不相同,有一个显然的并查集维护连通块最大值及其编号的算法,再加上各种方法求任意两点间的最大边的边权。加入一条边,如果连通性有改变,相应的并查集维护的东西也要改变。

但是 e 相同时,上述操作需要微调。具体:只需要调整并查集的合并操作和最后的求值操作。

如果合并的两个区间的最大 e 不相同,就往大的一边赋值。如果相同,则需要多维护一个东西。需要维护每个联通块的最大权边,满足其两个端点对应的两个连通块都有整个连通块的最大 e。因为一定是一棵树,所以无论询问给定的起点在哪里,这条边都是可以被作为简单路径的一条边经过的——如果起点在左边,那走到右边的最大 e 一定会经过这条边,反之亦然。想象一下,若当前连通块有有很多个点的 \(e\) 都为最大 \(e\),如果最终答案不是维护的那个最大边,就一定在一些“边缘地段”,而边缘地段到任何一个最大 e 的路径,都一定要包含离其最近一个最大 e 的路径(走一端没有最大 e,另一端一定会碰到一个最大 e,碰到第一个之后才会碰到更多的)。

所以对于询问点,跟任意一个最大 e 求树上路径最大值,都等价于跟最近的最大 e 求树上路径最大值,对于这个最大值,再跟这个连通块维护的最大边取较大的一方,就是答案(最大路径权值)。至于第一个询问:最大点权,就是最大 e,容易维护。

CF1583H Omkar and Tours 题解的更多相关文章

  1. 洛谷 P1522 牛的旅行 Cow Tours 题解

    P1522 牛的旅行 Cow Tours 题目描述 农民 John的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不 ...

  2. USACO 2.4 Cow Tours

    Cow Tours Farmer John has a number of pastures on his farm. Cow paths connect some pastures with cer ...

  3. Codeforces Round #447 (Div. 2) 题解 【ABCDE】

    BC都被hack的人生,痛苦. 下面是题解的表演时间: A. QAQ "QAQ" is a word to denote an expression of crying. Imag ...

  4. 洛谷P1522 牛的旅行 Cow Tours

    ---恢复内容开始--- P1522 牛的旅行 Cow Tours189通过502提交题目提供者该用户不存在标签 图论 USACO难度 提高+/省选-提交该题 讨论 题解 记录 最新讨论 输出格式题目 ...

  5. 洛谷P1522 [USACO2.4]牛的旅行 Cow Tours

    洛谷P1522 [USACO2.4]牛的旅行 Cow Tours 题意: 给出一些牧区的坐标,以及一个用邻接矩阵表示的牧区之间图.如果两个牧区之间有路存在那么这条路的长度就是两个牧区之间的欧几里得距离 ...

  6. [图论]牛的旅行 Cow Tours :Floyed-Warshall

    牛的旅行 Cow Tours 目录 牛的旅行 Cow Tours 题目描述 输入格式 输出格式 输入输出样例 输入 #1 输出 #1 解析 代码 题目描述 农民 John的农场里有很多牧区.有的路径连 ...

  7. [CF1536F] Omkar and Akmar(博弈论?组合数学)

    题面 [CF1536F] Omkar and Akmar 甲乙轮流在一个有 N N N 个位置的环上放字母(环上每个位置不同),每次可以放一个 A 或 B ,要求不能有相同的字母相邻,轮到某个人时不能 ...

  8. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  9. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  10. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

随机推荐

  1. 2020寒假学习笔记13------Python基础语法学习(二)

    同一运算符   同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址. 运算符 描述 is is 是判断两个标识符是不是引用同一个对象 is not is  not 是判断两个标识符是不是引用 ...

  2. WebSocket服务器

    //创建websocket 服务器  ws_server.php //https://wiki.swoole.com/wiki/page/479.html //创建websocket服务器对象,监听0 ...

  3. STM32F407 学习 (0) 各种外设功能 (上)

      本文对正点原子STM32F4探索者的基本功能及外设作最基本的介绍,随笔者本人的学习进程(基本按照正点原子)而不定时更新,起到总结的作用. 一.HAL库编写程序的运行逻辑   HAL库函数(如stm ...

  4. ACM-CodeForces-#685(Div.2)

    好久没见过CF有这么水的contest了,蒟蒻赶紧找找自信 A. Subtract or Divide #include<iostream> using namespace std; in ...

  5. 3.@RequestParma和@PathVariable的用法和区别

    前言 我相信很多程序员都会在自己的项目中使用到Restful风格来安全便捷地进行接口的编写,因此本文这篇博客来简要介绍一下controller方法中的两个注解:@RequestParma和@PathV ...

  6. 进程,Process模块,join方法,ipc机制,守护进程

    多道技术: """ 在学习并发编程的过程中 不做刻意提醒的情况下 默认一台计算机就一个CPU(只有一个干活的人) """ 单道技术 所有的程 ...

  7. 【贪心算法】NO134 加油站

    134. 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升 ...

  8. 【前端基础】(一)Es6新特性

    1 Es6 全称为ECMAScript是浏览器脚本语言的规范,而各种我们熟知的js语言则是规范的具体体现. 1.1 Es6新特性 ① let与var 作用域 <script> { var ...

  9. .NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法

    前言 前段时间有朋友问道一个这样的问题,.NET Core中如何通过Attribute的元数据信息来调用标记的对应方法.我第一时间想到的就是通过C#反射获取带有Custom Attribute标记的类 ...

  10. Java学习笔记04

    1. 循环进阶 1.1 无限循环 概念 ​ 循环一直停不下来,又叫死循环. for格式 for (;;) { 循环语句; } while格式 while (true) { 循环语句; } do...w ...