首页 > 其他分享 >NAPC-#1 rStage5 - Hard Conveyors

NAPC-#1 rStage5 - Hard Conveyors

时间:2023-07-20 18:34:12浏览次数:41  
标签:路径 limits min Hard rStage5 挂到 NAPC 长度 关键点

这个人赛时只过了这题,但是同学 @sinsop90 赛时只没过这题,怎么会是呢?

考虑到 \(s,t\) 之间路径必须经过关键点,假设这个关键点为 \(k\),那么路径形式一定是 \(s\to k\to t\)(废话)。

画一下图发现这条路径的长度等于 \(s\to t\) 的简单路径长度加上 \(k\) 挂到 \(s\to t\) 简单路径这条链上所经过的路径长度的 \(2\) 倍。

即:

考虑 \(1\to 7\to 9\) 这条路径,其长度相当于 \(1\to 2\to 4\to 9\) 简单路径长度加上 \(7\to 3\to 2\) 这条路径长度的 \(2\) 倍。

设 \(S\) 为关键点的集合,\(d(k,s\to t)\) 表示 \(k\) 挂到 \(s\to t\) 路径的长度。

对于一个询问 \((s,t)\),\(s\to t\) 路径长度时容易求的,我们只需要计算 \(\min\limits_{k\in S}d(k,s\to t)\) 即可。

考虑到 \(k\) 挂到 \(s\to t\) 路径上的那个点是唯一且在路径 \(s\to t\) 上的(上图中 \(k=7,s=1,t=9\),\(7\) 挂到 \(1\to 9\) 的点是 \(2\)),可以预处理出对于每个点 \(u\),离它最近的关键点的距离 \(f_u\),那么 \(\min\limits_{k\in S}d(k,s\to t)=\min\limits_{u\in \{s\to t\}}f_u\),\(\{s\to t\}\) 表示 \(s\to t\) 简单路径上的点构成的集合(包括 \(s,t\))。

这个 \(f_u\) 显然可以通过树形 dp 求出,问题转换为求 \(s\to t\) 路径上的点的 \(f\) 值的最小值,树剖解决即可。因为我用的是线段树,复杂度 \(O(n\log^2 n)\),其实可以 st 表做到 \(O(n\log n)\)。

赛时代码,写得有点丑陋。

标签:路径,limits,min,Hard,rStage5,挂到,NAPC,长度,关键点
From: https://www.cnblogs.com/Ender32k/p/17569338.html

相关文章

  • ShardingSphere
     https://shardingsphere.apache.org/index_zh.html基本概念什么是shardingsphere?https://shardingsphere.apache.org/document/current/cn/overview/什么是分库分表?分库分表的方式垂直切分垂直分表垂直分库......
  • Learning hard C#学习笔记——读书笔记 07
    1.值类型和引用类型1.1什么是值类型和引用类型值类型:包括简单类型,枚举类型,结构体类型等,值类型通常被分配在线程的堆栈上,变量保存的内容就是实例数据本身引用类型:引用类型实例则被分配在托管堆上,变量保存的是实例数据的内存地址,引用类型主要包括类类型、接口类型、委托类型......
  • SpringBoot + Sharding JDBC 分库分表
    Sharding-JDBC最早是当当网内部使用的一款分库分表框架,到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已更名为ShardingSphere,2020年4⽉16日正式成为Apache软件基金会的顶级项目。ShardingSphere-Jdbc定位为轻量级Java框架,在Java的Jdbc层提......
  • shardingsphere配置读写分离集群(1主2从结构)
    第一章、shardingsphere的安装1、使用ftp将离线安装包放到/opt2、进入opt目录,解压,移动到/usr/local,重命名cd/opttar-xzvfmysql-5.7,29-linux-glibc2.12-x86_64.tar.gzmvapache-shardingsphere-4.1.1-sharding-proxy-bin/usr/localcd/usr/localmvapache-shardingsph......
  • 1851. 包含每个查询的最小区间 (Hard)
    问题描述[1851.包含每个查询的最小区间](Hard)给你一个二维整数数组intervals,其中intervals[i]=[leftᵢ,rightᵢ]表示第i个区间开始于leftᵢ、结束于rightᵢ(包含两侧取值,闭区间)。区间的长度定义为区间中包含的整数数目,更正式地表达是rightᵢ-leftᵢ+1......
  • 1851. Minimum Interval to Include Each Query (Hard)
    Description1851.MinimumIntervaltoIncludeEachQuery(Hard)Youaregivena2Dintegerarrayintervals,whereintervals[i]=[lefti,righti]describestheithintervalstartingatleftiandendingatrighti(inclusive).Thesizeofanintervalisdefi......
  • Learning hard C#学习笔记——读书笔记 04
    1.什么是接口接口可以认为是一种规范,它是一种类的构建规范,它里面定义了一系列的方法和类型,但是没有具体的实现,需要继承它的类去自我实现2.接口的定义使用VS2022在解决方案管理器这里,添加新建项在添加新建项模板这里,选择接口最后创建出来的接口如下usingSystem;......
  • [Typescript] 150 Hard - OptionalUndefined
    Implementtheutiltype OptionalUndefined<T,Props> thatturnsallthepropertiesof T thatcanbe undefined,intooptionalproperties.Inaddition,asecond-optional-generic Props canbepassedtorestrictthepropertiesthatcanbealtered.Opti......
  • Learning hard C#学习笔记——读书笔记 05
    1.什么是IL语言我们开篇介绍C#的时候,就介绍了C#的编译过程,C#会通过编译器先编译成IL语言(IntermediateLanguage),IL代码会存放在一个程序集中IL(IntermediateLanguage),它称为CIL或者MSIL,IL是由ECMA组织(也就是定义JS标准的那个组织),提供完整的定义和规范。使用VisualStudio......
  • Learning hard C#学习笔记——读书笔记 03
    C#是面向对象的语言,每次到这里就会有一个问题,什么是对象,其实一句话就可以解释,那就是——万物皆是对象,这句话就像“如来”一样抽象,其实,我们无须在这上面耗费太大的精力,我们随着学习的深入,对象的概念自然会深入到脑海中所有面向对象的编程语言都有以下三个基础特征封装——把客......