首页 > 其他分享 >[浅谈] 线段树优化建边

[浅谈] 线段树优化建边

时间:2023-03-20 21:24:24浏览次数:38  
标签:浅谈 color text 线段 建边 连向 区间

\(\color{purple}\text{P6348 [PA2011]Journeys}\)

\(\color{green}\text{2023.1.10 10:58}\)
线段树优化建边。
题意:给定一个图,每次对区间 \([a,b]\) 至区间 \([c,d]\) 建边。如果你很蠢,之间暴力建边,那么边复杂度是 \(O(n^2)\) ;如果你聪明一点,对每种边新建两个端点,那么 \([a,b]\) 连起点,\([c,d]\) 连终点,复杂度为 \(O(n)\) ;如果你想通过这道题,那就要用到线段树建边,假设每个点都已经连向某个区间了,那么你只要对区间建边即可。套用线段树,复杂度 \(O(\text{log n})\) 。

具体实现:

在这个例子中,给定 \(6\) 个点,对 \([1,5]\) 到 \([2,6]\) 建单向边。

真实的点是图中的蓝色点,而真实的边是图中的 \(w\) 边。(其他都是辅助点和边)

如图右边构成了一棵“入树”,其中的每个区间,是对应真实点可以到达的,
如图左边构成了一棵“出树”,其中的每个区间,能到达对应真实点。
(出树的叶子节点连向对应的真实点,即图中的黄边)(图中只标出了“3号点”的黄边,其他省略)。

建边:
首先新建这条边的两端点。(“+1点”和“+2点”)。
然后把入树上的 \([1,5]\) 连向“+1”。
然后把“+2”连向出树上的 \([2,6]\) 。
然后恭喜你学会了“\(\color{red}\text{线段树优化建边}\)”。


建完图后,发现真实边权为 \(1\) ,辅助边权为 \(0\) 。那么使用 \(\color{red}\text{01bfs}\) 求最短路最佳。

标签:浅谈,color,text,线段,建边,连向,区间
From: https://www.cnblogs.com/FJOI/p/17237839.html

相关文章

  • 浅谈集合HashSet
    HashSet简介HashSet集合继承于Collection集合,Collection集合的常用方法也在HashSet中同样适用。底层原理:HashSet集合底层采用哈希表存储数据,底层是new了一个HashMap,a......
  • 浅谈市政施工中深基坑支护技术施工中的难点与突破途径 方芳 武汉市江夏区公路建筑工程
    浅谈市政施工中深基坑支护技术施工中的难点与突破途径方芳武汉市江夏区公路建筑工程公司   湖北武汉    430200http://www.qikan.com.cn/newarticleinfo/828c2......
  • 浅谈云原生基础入坑与docker 搭建redis-cluster集群
    浅谈云原生基础入坑与docker搭建redis-cluster集群开篇来点自己的小感触:自从走上后端开发这条无法回头的互卷道路以后,在视野内可见新的技术在迭代,更新的技术在不断发行。......
  • 线段树模板
    扫描线#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=4e5+10;intread(){ intx=0,f=1;charc=getchar(); while(c>'9'||c<'0')......
  • 线段树全解
    前言线段树,维护区间修改的利器,种类繁多。以其码量巨大的特点骇人听闻。\(OIerhhx\)为了让线段树的使用方便更加方便简洁,不再苦恼,于是写下了这篇博客。线段树伪代码指南......
  • 浅谈 equals() 和 hashCode()
    equals()和hashCode()在Object类中定义hashCode():用于计算对象哈希值。equals():用于比较对象是否相等。默认实现Object定义的方法默认实现:均基于对象引用......
  • 动态开点线段数 & 线段数合并学习笔记
    动态开点线段树使用场景\(4\timesn\)开不下。值域需要平移(有负数)。什么时候开点显然,访问的节点不存在时(只会在修改递归时开点)。trick区间里面有负数时,\(mid=......
  • 浅谈DWS函数出参方式
    摘要:DWS的PL/pgSQL函数/存储过程中有一个特殊的语法PERFORM语法,用于执行语句但是丢弃执行结果的场景,常用于一些状态判断的场景。本文分享自华为云社区《GassDB(DWS)功能-......
  • Copy of a Copy of a Copy (构造体,建边拓扑,箭头先后关系)
      提取性质:关键:改完一个点,就不能恢复2个点在一起一定不能改于是根据上面2点,枚举每一个点看看这个点需不需要改,如果要改就建一个边就行了,然后拓扑序一下......
  • Educational Codeforces Round 2 E Lomsat gelral 线段树合并
    题目链接大致题意给你一棵有n个点的树,树上每个节点都有一种颜色ci(ci≤n),让你求每个点子树出现最多的颜色/编号的和记性不好,主要是为了防止自己忘掉,今天和队友合作写题......