传送门

首先最开始说的那个一条路径的权值就是想告诉你两个点之间的贡献就是瓶颈边的权值。

那么肯定要用最小生成树算法。

于是我考场上想了30min+30min+30min+的树形dpdpdp

发现转移是优秀的nlognnlog_nnlogn​,总时间复杂度O(n2logn)O(n^2log_n)O(n2logn​)妙啊

然后有了弃疗的想法。

突然想到没有利用kruskalkruskalkruskal算法的性质。

其实就是一个kruskalkruskalkruskal重构树用到的思想,对于两个连通块,当前这条将它们连接起来的边是两个连通块的点连通的瓶颈

这就好办了。

只用算出这条边贡献了几次就行了。

咦线段树合并可做啊总复杂度O(nlogn2)O(nlog^2_{n})O(nlogn2​)妙啊

咦等等好像启发式合并更好写啊。

咦等等…

终于等到了一个妙不可言的时刻。

我发现题目给的式子可以变形啊!

设对于限制∣Cu−Cv∣≥L|C_u-C_v|\geq L∣Cu​−Cv​∣≥L中较大的数为xxx,较小的数为yyy.

=>x≥y+Lx\geq y+Lx≥y+L

=>x>y+L−1x>y+L-1x>y+L−1

那么对于所有点,我们将CiC_iCi​和Ci+L−1C_i+L-1Ci​+L−1共同离散化。

然后对CiC_iCi​和Ci+L−1C_i+L-1Ci​+L−1分别维护两种权值线段树。

之后直接线段树合并就行了。

时间复杂度O(nlogn)O(nlog_n)O(nlogn​)吊了标算?妙啊

放一波代码

2018.10.26 NOIP模拟 图(最小生成树+线段树合并)的更多相关文章

  1. 2018.06.26 NOIP模拟 纪念碑(线段树+扫描线)

    题解: 题目背景 SOURCE:NOIP2015−GDZSJNZXSOURCE:NOIP2015-GDZSJNZXSOURCE:NOIP2015−GDZSJNZX(难) 题目描述 2034203420 ...

  2. 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)

    传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码

  3. 2018.10.12 NOIP模拟 数据结构(线段树)

    传送门 sb线段树题居然还卡常. 修改操作直接更新区间最小值和区间标记下传即可. 询问加起来最多5e65e65e6个数. 因此直接询问5e65e65e6次最小值就行了. 代码

  4. 2018.06.29 NOIP模拟 旅馆(线段树)

    旅馆 [问题描述] OIEROIEROIER 们最近的旅游计划,是到长春净月潭,享受那里的湖光山色,以及明 媚的阳光.你作为整个旅游的策划者和负责人,选择在潭边的一家著名的旅馆住 宿.这个巨大的旅馆一 ...

  5. 2018.06.29 NOIP模拟 排列(线段树)

    排列(premu.cpp) [题目描述] 对于一个 1 到 n 的排列,逆序数的定义为:排列中第 i 位 ai的逆序数就是 a1-ai-1中比 ai大的数的个数.另外用 pi表示 a1,-,ai的逆序 ...

  6. 2018.08.22 NOIP模拟 or(线段树)

    or [描述] 构造一个长度为 n 的非负整数序列 x,满足 m 个条件,第 i 个条件为x[li] | x[li+1] | - | x[ri]=pi. [输入] 第一行两个整数 n,m.接下来 m ...

  7. 2018.10.26 NOIP模拟 瓶子 (dp/贪心)

    传送门 正解是dp并不想去想了. 自己yy了一个贪心拿了95pts95pts95pts,唯一没过的点还只有一个地方错了,面向数据变成之后过啦! 所以我讲讲如何贪心. 考虑到最后都只会合并成一种颜色,所 ...

  8. 2018.10.26 NOIP模拟 性感手枪(搜索)

    传送门 vis[x][y]vis[x][y]vis[x][y]记录这个点是否在之前被搜过,且被搜过的坐标是什么. 然后搜索的时候记录一个循环的下标和不循环的下标就行了. 代码

  9. 2018.10.20 NOIP模拟 巧克力(trie树+dfs序+树状数组)

    传送门 好题啊. 考虑前面的32分,直接维护后缀trietrietrie树就行了. 如果#号不在字符串首? 只需要维护第一个#前面的字符串和最后一个#后面的字符串. 分开用两棵trie树并且维护第一棵 ...

随机推荐

  1. Java-排序算法-插入排序

    一.插入排序的原理 将一个记录插入到一个已经排好序的有序表中,从而得到一个新的,记录数增1的新的有序表.从第一个元素开始,先将第一个元素看做一个排好序的子序列,然后从第二个元素开始起,对第二个元素进行 ...

  2. [LeetCode_94] Binary Tree Inorder Traversal

    题目链接 https://leetcode.com/problems/binary-tree-inorder-traversal/ 题意 二叉树的中序遍历 思路 中序遍历:即"左中右&quo ...

  3. swift - 百度地图API集成

    1.百度搜索  百度地图api 2. 选中之后选择, 看功能需求下载 API 3. 下载的API拖入项目,此处有坑, 如果只用地图或者 定位,这中写着 是 导航的SDK 别拖进去, 不然报错 怕搞错到 ...

  4. iPhone X系列 的获取 - 安全区顶部和底部高度

    ///1. 获得当前窗口 var JY_WINDOW: UIWindow? { get{ if let app = UIApplication.shared.delegate as? AppDeleg ...

  5. C语言可以开发哪些项目?(转)

    原文地址:https://www.cnblogs.com/shiyanlou/p/6098661.html 知乎:https://www.zhihu.com/question/20564904 C语言 ...

  6. ios 后台发送邮件之SKPSMTPMessage的使用

    skpsmtpmessage 是ios第三方后台发送邮件库 https://github.com/jetseven/skpsmtpmessage.git 1.由于skpsmtpmessage是非ARC ...

  7. chorem浏览器无法下载

    下载的时候指定字节的长度 context.Response.AddHeader("Content-Length", bytes.Length.ToString()); contex ...

  8. Vue filter-v-for 使用

    var app5 = new Vue({ el: '#app5', data: { shoppingList: [ "Milk", "Donuts", &quo ...

  9. Windows删除服务方法

  10. Linux netstat

    一.简介   二.语法   三.实例 1)查看TCP连接数 netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'