当前位置: 首页 > article >正文

线段树优化建图

1. 概念1.1.本质本质就是用两颗线段树优化建图节省空间1.2.作用看标题可以知道 这东西其实就是一个辅助优化我们建图的东西可以辅助优化我们干些什么点向区间连边区间向点连边区间向区间连边2.实现2.1.口胡实则不然为什么要优化如果我们要将图上的[1,1]区间向[2,2]区间中的每一个点连一条边那么这一个小操作需要连(1−11)∗(2−21)条边如果有一个,区间很大的操作我们就寄寄了光是存边就可能会炸掉用虚点行吗考虑使用虚点就是一个我们强行加进去的一个原图上不存在的点把[1,1]中的每一个点向虚点连一条边然后虚点向[2,2]中每一个点连一条边os:我的图片好精美这个网站太好用了 https://app.diagrams.net/这样我们就成功地把(1−11)∗(2−21)条边缩减到了(1−11)(2−21)条边但是如果有个操作我们就又寄寄了怎么办回归到今天的知识点梳理一下现在的信息我们每一次需要把一堆点连到一个点上 然后把一个点向一堆点连线我们看第二个点像什么东西呢 为了方便实现区间操作自然地想到了线段树怎么用还是先看第二个问题把一个点向一堆点连线那么我们直接在原图基础上在旁边加一颗线段树并把要连的点连到对应的线段树的点上1−[2,4]这样我们不管连多大的区间最多也就只需要连级别的边数第二个问题是解决了那第一个问题呢?第二个问题实现的是点到区间的映射第一个问题实现的是区间到点的映射这两个刚好反过来了于是我们考虑把线段树倒过来本来是父亲指向儿子我们把它变成儿子指向父亲这样从[1,2]的一条出边从[1,2]向其他点连的边就可以使[1,2]整个区间内的点都连出去了画一下这样就成功实现了为了方便表示我们把第一个图中的树叫做出树第二个图的叫做入树这里就理解成父节点连的是出边还是入边就好不然容易被绕晕2.2.代码实现2.2.1.建树(build)在建树的时候记得边权全部赋0具体可根据题意调整struct Edge{ int to,w;//id 花费 };vectorEdge e[N];//邻接链表 inline void add_edge(int u,int v,int w){//u-v e[u].push_back({v,w}); } inline void build_out(int o,int l,int r){//建出树 if(lr)return ol,void(); /* if(lr)return ol,void(); 相当于 if(lr){ ol; return; } */ onode_tot; int mid(lr)1; build_out(lc[o],l,mid),build_out(rc[o],mid1,r); add_edge(o,lc[o],0),add_edge(o,rc[o],0); } inline void build_in(int o,int l,int r){//建入树 if(lr)return ol,void(); onode_tot; int mid(lr)1; build_in(lc[o],l,mid),build_in(rc[o],mid1,r); add_edge(lc[o],o,0),add_edge(rc[o],o,0); }2.2.2.连边(update)inline void update_out(int o,int l,int r,int L,int R,int u,int w){//u-[L,R]连边 权值为w if(LlrR)return add_edge(u,o,w),void(); int mid(lr)1; if(Lmid)update_out(lc[o],l,mid,L,R,u,w); if(Rmid)update_out(rc[o],mid1,r,L,R,u,w); } inline void update_in(int o,int l,int r,int L,int R,int u,int w){//[L,R]-u连边 取值为w if(LlrR)return add_edge(o,u,w),void(); int mid(lr)1; if(Lmid)update_in(lc[o],l,mid,L,R,u,w); if(Rmid)update_in(rc[o],mid1,r,L,R,u,w); }3.例题CF786B LegacyCFluogu给定 个节点参数 有 次操作给定参数 ,,从 向 连一条权值为 的边。给定参数 ,,,从 向 连 [,] 一条权值为 的边。给定参数 ,,, 从 [,] 向 连一条权值为 的边。求 到每个节点的最短路。1≤,≤105,1≤≤1092256。板子题 把上面的入树出树和原图的个点放在一起建一堆边然后跑Dijikstra即可附上本蒟蒻的丑陋代码#includebits/stdc.h using namespace std; #define int long long const int N4e510; const int INF0x3f3f3f3f3f3f3f3f; int n,s,Q; struct Edge{ int to,w; };vectorEdge e[N]; bool operator(const Edge x,const Edge y){ return x.wy.w; }inline void add_edge(int u,int v,int w){ e[u].push_back({v,w}); } int lc[4*N],rc[4*N]; int node_tot; int root_out; int root_in; int dis[N]; int vis[N]; priority_queueEdge q; inline void build_out(int o,int l,int r){ if(lr)return ol,void(); onode_tot; int mid(lr)1; build_out(lc[o],l,mid),build_out(rc[o],mid1,r); add_edge(o,lc[o],0),add_edge(o,rc[o],0); }inline void build_in(int o,int l,int r){ if(lr){ ol; return; } onode_tot; int mid(lr)1; build_in(lc[o],l,mid); build_in(rc[o],mid1,r); add_edge(lc[o],o,0); add_edge(rc[o],o,0); } inline void update_out(int o,int l,int r,int L,int R,int u,int w){

相关文章:

线段树优化建图

1. 概念 1.1.本质 本质就是用两颗线段树优化建图(节省空间) 1.2.作用 看标题可以知道 这东西其实就是一个辅助(优化)我们建图的东西 可以辅助(优化)我们干些什么: 点向区间连边区间向点连…...

从一次系统升级说起:聊聊Android PMS如何管理/system/app下的预装应用

Android PMS深度解析:系统预装应用的管理艺术 1. 系统预装应用的特殊地位 在Android生态系统中,预装应用占据着独特的位置。这些位于/system/app目录下的应用与普通用户应用有着本质区别: 系统级权限:预装应用通常拥有更高的系统权…...

终极指南:如何在TouchGal一站式Galgame社区发现你的视觉小说宝藏

终极指南:如何在TouchGal一站式Galgame社区发现你的视觉小说宝藏 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next TouchGa…...

StructBERT中文相似度模型保姆级教学:如何用TSNE可视化高维句向量空间分布

StructBERT中文相似度模型保姆级教学:如何用TSNE可视化高维句向量空间分布 1. 引言:为什么需要可视化句向量? 当你使用StructBERT这样的模型计算句子相似度时,你得到的只是一个0到1之间的数字。这个数字告诉你两个句子“有多像”…...

intv_ai_mk11部署避坑指南:端口映射失败、响应延迟、乱码重复等问题解决方案

intv_ai_mk11部署避坑指南:端口映射失败、响应延迟、乱码重复等问题解决方案 1. 环境准备与快速部署 1.1 系统要求 操作系统:Ubuntu 20.04/22.04 LTSGPU:NVIDIA显卡(至少16GB显存)内存:32GB以上存储&…...

5个Windows运行Android应用方案测评:普通用户的轻量级跨平台解决方案

5个Windows运行Android应用方案测评:普通用户的轻量级跨平台解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字化办公与娱乐日益融合的今天&am…...

langchain4j 学习系列(9)-AIService与可观测性

一、基本用法1.1 定义业务接口View Code注:{{it}}是langchain4j内部约定的默认占位符名。当只有1个参数时,{{it}}在运行时,会自动替换成用户的prompt. 当然也可以强制指定参数名,就本示例而言,注释的二种写法&#xff…...

电子电路中的“心脏”:电源

一、语言特性:Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一,就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...

周末高质量遛娃,你真的找对地方了吗?

“周末想高质量遛娃,却不知找对地方了没?” 周末对于家长来说,是陪伴孩子的黄金时间,都希望能给孩子一段既有趣又有意义的时光。但究竟哪里才是高质量遛娃的好去处呢?下面就为您详细解答。遛娃地点基础认知类Q&#xf…...

微信聊天记录永久保存终极指南:WeChatMsg免费工具完整解决方案

微信聊天记录永久保存终极指南:WeChatMsg免费工具完整解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...

如何永久保存微信聊天记录?这款免费工具让你真正拥有自己的数字记忆

如何永久保存微信聊天记录?这款免费工具让你真正拥有自己的数字记忆 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tren…...

Fiji在macOS系统的兼容性解决方案:从启动故障到配置优化的完整指南

Fiji在macOS系统的兼容性解决方案:从启动故障到配置优化的完整指南 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji作为科学图像处理领域广泛使用的"…...

Plumbum管道与重定向完全教程:构建复杂Shell命令链

Plumbum管道与重定向完全教程:构建复杂Shell命令链 【免费下载链接】plumbum Plumbum: Shell Combinators 项目地址: https://gitcode.com/gh_mirrors/pl/plumbum Plumbum是一个强大的Python库,它让您在Python中编写shell脚本般简洁的代码&#x…...

微信聊天记录永久保存与深度分析:WeChatMsg让你的数字记忆不再流失

微信聊天记录永久保存与深度分析:WeChatMsg让你的数字记忆不再流失 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trend…...

数据库课程设计融合AI:使用PyTorch构建智能图书馆推荐系统

数据库课程设计融合AI:使用PyTorch构建智能图书馆推荐系统 1. 项目背景与价值 高校图书馆管理系统是数据库课程的经典设计选题,但传统方案往往只关注基本的增删改查功能。将AI推荐系统融入课程设计,不仅能让学生掌握数据库设计核心技能&…...

万象视界灵坛效果展示:血条样式进度条直观呈现各标签置信度差异

万象视界灵坛效果展示:血条样式进度条直观呈现各标签置信度差异 1. 平台概览 万象视界灵坛是一款基于OpenAI CLIP技术的高级多模态智能感知平台。它通过创新的像素风格界面,将复杂的视觉识别任务转化为直观的交互体验。平台采用16-Bit游戏美学设计&…...

使用AIVideo实现LaTeX学术报告自动转视频教程

使用AIVideo实现LaTeX学术报告自动转视频教程 1. 引言 作为一名科研工作者,你是否曾经为了准备学术会议的视频报告而头疼?传统的视频制作需要录制、剪辑、配音等多个繁琐步骤,耗时耗力。现在,通过AIVideo这个强大的AI视频创作平…...

LFM2.5-1.2B-Thinking多场景落地:Ollama支持下的技术博客写作、论文摘要生成案例

LFM2.5-1.2B-Thinking多场景落地:Ollama支持下的技术博客写作、论文摘要生成案例 你是不是也遇到过这样的烦恼:想写一篇技术博客,对着空白的文档发呆半天,不知道从何下笔;或者面对一篇几十页的学术论文,需…...

数据主权时代,企业即时通讯厂商选型推荐

BeeWorks作为企业级私有化 IM,主打安全可控、深度协同、信创适配,在政企、军工、金融等强合规场景口碑突出。BeeWorks 定位为安全专属数字化协作平台,核心是私有化部署 全链路安全 业务深度融合,区别于通用 SaaS IM。1. 核心架构…...

GLM-4.1V-9B-Base快速体验教程:PyCharm专业版中的调试与开发技巧

GLM-4.1V-9B-Base快速体验教程:PyCharm专业版中的调试与开发技巧 1. 开篇:为什么选择PyCharm开发GLM应用 PyCharm作为Python开发者最熟悉的IDE之一,其专业版提供的远程开发调试能力特别适合GLM这类大模型开发场景。想象一下,你可…...

ClaudeCode 入门详细教程,手把手带你Vibe Coding

本文使用 Mac 进行演示。主要是在安装环节有环境差异。 1. Claude Code 简介 Claude Code 是 Anthropic 推出的面向开发者的 AI 编程协作工具。Claude Code 的核心目标是理解你的整个项目,并参与到真实的编码、修改和重构过程中。Claude Code 不是一个代码生成器&…...

手把手搭建基于Kintex UltraScale+的Cameralink图像处理系统:从LVDS解码到GTY输出HDMI的完整Vivado工程解析

手把手搭建基于Kintex UltraScale的Cameralink图像处理系统:从LVDS解码到GTY输出HDMI的完整Vivado工程解析 在工业视觉和医疗影像领域,Cameralink接口凭借其高带宽和低延迟特性,依然是许多高端相机的首选接口方案。而Xilinx的Kintex UltraSca…...

nRF52832蓝牙开发实战:手把手教你配置广播与扫描(基于SES和nRF5 SDK 15.3)

nRF52832蓝牙开发实战:从零配置广播与扫描全流程解析 在物联网设备开发中,蓝牙低功耗(BLE)技术因其低功耗、低成本的特点成为连接智能设备的首选方案。作为Nordic Semiconductor的明星产品,nRF52832凭借其强大的处理能…...

AI字体生成技术应用指南:从问题到解决方案的实践之路

AI字体生成技术应用指南:从问题到解决方案的实践之路 【免费下载链接】Rewrite Neural Style Transfer For Chinese Characters 项目地址: https://gitcode.com/gh_mirrors/rewr/Rewrite 在数字化设计领域,中文字体的个性化定制一直是创意工作者面…...

MOOTDX终极指南:5个简单步骤掌握Python通达信数据接口

MOOTDX终极指南:5个简单步骤掌握Python通达信数据接口 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx MOOTDX是一个强大的Python通达信数据接口库,它能让你轻松获取A股市场…...

配网接地故障排查效率提升3倍:力兴电子LX6180交流试送仪

作为常年跑野外的配网试验人员,相信大家都遇过10~66kV小电流接地系统单相接地故障的排查难题:传统分段拉闸、登杆巡检的方法,短则两三小时、长则大半天才能锁定故障点,遇上瓷瓶开裂、污潮湿引起的高阻隐性故障,更是容易…...

用Python+Pandas搞定校园单车数据清洗:从‘200+’到精准分布表的保姆级教程

用PythonPandas搞定校园单车数据清洗:从‘200’到精准分布表的保姆级教程 校园单车数据清洗是数据分析实战中的经典场景。想象一下这样的情境:你拿到一份包含15个停车点、7个时间段的校园单车统计表,却发现数据里混杂着"200"这样的…...

Phi-4-mini-reasoning科研协作:Jupyter Notebook嵌入式推理插件

Phi-4-mini-reasoning科研协作:Jupyter Notebook嵌入式推理插件 1. 模型简介 Phi-4-mini-reasoning是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族的一员,它经过专门微调以提升数学推理…...

MySQL--Day02

约束 约束是作用于表中字段上的规则,用于限制存储在表中的数据 为了保证数据库中数据的正确性、有效性、完整性非空约束 NOT NULL唯一约束 UNIQUE主键约束 PRIMARY KEY默认约束 DEFAULT检查约束 CHECK CREATE TABLE user(id int primary key auto_increm…...

LoRA训练助手GPU显存优化:Qwen3-32B INT4量化后仅需9.2GB显存稳定运行

LoRA训练助手GPU显存优化:Qwen3-32B INT4量化后仅需9.2GB显存稳定运行 1. 引言:当大模型遇见显存焦虑 如果你尝试过在个人电脑上运行大语言模型,大概率会遇到一个令人头疼的问题:显存不足。特别是像Qwen3-32B这样拥有320亿参数的…...