灾后重建题解

灾后重建题解(Java) 灾后重建题解 阅读详情

因为某大学需要,被教练抓(动词不对不要管)去思考这道题,于是一个晚修报销

首先有一个显然的结论:每个询问的答案一定在最小生成树上。
接着,我们定一个常数c,对于每个询问的k进行分类:

1、k>c,此时我们暴力解决该询问,即对于该询问的所有特殊点进行暴力,两两之间求lca然后询问路径上的最值。
树路径的最值询问可以使用树链剖分,时间复杂度一次询问o(log^2 n)
然而这题并没有修改操作,树链剖分不划算。
我们改用倍增算法,设f[i,j]表示结点i到其2^j级祖先的树路径的最值。
预处理o(n log n),一次询问需要求lca所以要o(log n)。用tarjan求lca可以做到单次询问o(1)(注意这里把并查集的复杂度当作o(1))。

2、k<=c,此时我们每一次解决k值相同的所有询问。
即,我们枚举k,然后枚举c,然后解决所有要求模k余c的点为特殊点的询问。
我们按照升序添加所有符合模k余c的点,线段树维护区间最值,其中叶子结点的值也相当于询问树路径上的最值。
那么每个询问都对于一个区间查询,用线段树做每次插入/删除复杂度为o(log n)。

我们取c=根号n,那么第一类复杂度为o(n*根号n*log n),第二类复杂度也为o(n*根号n*log n)。(这里的复杂度分析没有考虑n,q的区别,因为他们同规模这里不予区分)
因为c大则特殊点数目小,c小则k值不同取值小。

UE5在Ubuntu22.04.4下的高效开发环境配置指南 本文详细介绍了在Ubuntu 22.04.4系统上配置UE5高效开发环境的完整指南,包括系统准备、显卡驱动安装、UE5引擎编译与配置、开发工具链设置以及性能优化技巧。通过逐步指导,帮助开发者快速搭建稳定的UE5开发环境,解决常见问题,提升开发效率。 阅读详情

相关推荐

【嵌入式底层知识修炼】按键和LED共用IO口的分时复用扫描方法

文章目录01 - PCB原理图例程02 - 分时复用的注意项和设计2.1 - 注意项2.2 - 设计03 - 代码实现 只要我跑的速度够快,寂寞就追不上我 只要Key和Led切换速度够快,人眼就看不出来 ————小白   如果你存在按键Key和显示Led共用同一个IO时,需要分时复用的需求,则可以移植代码进行使用: 代码所占code少于0.5K 线程安全,中断安全 可移植性高,配置容易 注意:系统需要存在一个至少为1ms的时钟中断 01 - PCB原理图例程   举2个Key和Led共用IO口的

单眼皮根号三的博客 1万+

【灾后重建】蓝桥杯第六届省赛C/C++大学A组(并查集+Kruskal算法)

Pear市一共有N个居民点,居民点之间有M条双向道路相连。这些居民点两两之间都可以通过双向道路到达。这种情况一直持续到最近,一次严重的地震毁坏了全部M条道路。

KI的博客 8万+

STM32Cubemx-H7-17-麦克纳姆轮驱动

我们先看.h,知道哪些函数会有哪些功能和宏定义参数首先 是在.h的宏定义处定义引脚编号,比如tb6612控制方向的引脚,以及设定了哪个定时器作为pwm输出,还有编码计次的中断引脚/* 硬件相关宏定义 *//*1 前进方向往上 42 3*/// TB6612 方向引脚定义/* 定时器相关宏定义 *//* 编码器相关宏定义 */把自己的引脚根据原理图填对应,方向引脚也是,如果发现反转就把对应的引脚定义反过来,编码也是,编码我们用一个引脚就好,都在cubemx配置好。

m0_74211379的博客 1419

蓝桥杯试题——灾后重建

蓝桥杯试题——灾后重建 #include<iostream> #include<cstring> int N, M, Q; int x; int C; int visited[5002]; int p[5002]; using namespace std; struct Map { int arc[5002][5002]; int vexnum; int arcnum; }; Map map; void Init() { for (int i = 0; i <

qq_46586095的博客 584

【验证技能树】UVM 源码解读01 -- UVM本质上就是软件工程方法论在芯片验证领域的应用

文章摘要: UVM(通用验证方法学)是基于SystemVerilog的芯片验证框架,采用组件化、面向对象和事务级抽象设计。其核心在于职责分离与数据流,通过Driver、Monitor、Sequencer等模块协作实现高效验证。UVM强调复用性、可扩展性和可维护性,类似软件工程的模块化与低耦合原则。理解其体系结构比记忆API更重要,有助于灵活组合组件并提升验证效率。UVM不仅是工具,更融合了软件工程思维,推动验证工作向自动化、系统化发展。掌握UVM底层逻辑能优化验证环境设计,适用于从IP到SoC的多层级验证场

qq_45869788的博客 1039

最优化理论与自动驾驶(三):LQR原理、公式及代码演示

LQR 是基于线性系统和二次型代价函数的最优控制方法,在实际工程应用中,我们一般采用离散时间系统的LQR设计,其目标是通过设计反馈控制律,使系统在离散时间步长内稳定运行,最小化某个二次型代价函数。给定一个离散时间系统,其状态和控制输入通过以下方程表示:是时刻k的系统状态,是时刻k的控制输入,是状态转移矩阵,是输入矩阵。系统描述的物理意义:系统状态通过矩阵A演变到下一时刻,同时控制输入通过矩阵B影响系统的状态。

a8598671的博客 4594

2015蓝桥杯C++A组——灾后重建

灾后重建题目链接 目录问题描述题目解析最小生成树简单算法C++代码 问题描述 【题目描述】 【输入】 【输出】 【样例输入】 7 10 4 1 3 10 2 6 9 4 1 5 3 7 4 3 6 9 1 5 8 2 7 4 3 2 10 1 7 6 7 6 9 1 7 1 0 1 7 3 1 2 5 1 0 3 7 2 1 【样例输出】 9 6 8 8 题目解析 最小生成树简单算法 对于每一次问询,关注若干点后,我们需要按照最小生成树的方法生成n-1条边,此时关注点全部连通,然后求出其中的最大边

SAMSARA的博客 996

FAST-LIO2:论文和算法解析

本文介绍了FAST-LIO2算法:一种快速、鲁棒、通用的激光雷达-惯性里程计框架。FAST-LIO2基于高效的紧密耦合迭代卡尔曼滤波器,具有两个关键的新颖之处,可实现快速,稳健和准确的激光雷达导航(和测绘)。第一种方法是直接将原始点注册到地图上然后更新地图,而不提取特征。这样可以利用环境中的细微特征,从而提高准确性。消除手工设计的特征提取模块,也使其能够适应不同扫描模式的新兴激光雷达;

超爱吃小蛋糕的66的博客 1万+

蓝桥杯——灾后重建

灾后重建Pear市一共有N(&lt;=50000)个居民点,居民点之间有M(&lt;=200000)条双向道路相连。这些居民点两两之间都可以通过双向道路到达。这种情况一直持续到最近,一次严重的地震毁坏了全部M条道路。震后,Pear打算修复其中一些道路,修理第i条道路需要Pi的时间。不过,Pear并不打算让全部的点连通,而是选择一些标号特殊的点让他们连通。Pear有Q(&lt;=50000)次询问,...

志远的博客 2251

8、水力压裂引起的地质材料力学性质变化的可视化研究

本研究探讨了水力压裂引起的地质材料力学性质变化的可视化方法。利用超声剪切波形数据,通过短时傅里叶变换(STFT)和主成分分析(PCA)进行特征提取和降维,并应用K-means聚类、凝聚聚类和DBSCAN等无监督学习方法对地质力学变化进行非侵入式可视化分析。研究比较了不同特征工程、聚类方法和降维策略对可视化效果的影响,并结合位移不连续性理论为聚类结果分配地质力学变化指数,以提高结果的物理解释性。最终,该方法成功实现了对水力压裂引起的岩石力学性质变化的高效、可靠可视化。

emacs5lisp的博客 109

我在腾讯上构建了一个人人能用的机载适航知识库

当ChatGPT掀起生成式AI的浪潮时,工程师们发现了一个尴尬的现实:询问“如何编写软件合格审定计划”,AI的回答可能充满似是而非的术语,却无法精确关联FDO-178C的对应内容。现在市面上有许多的AI大模型+适航知识库的方案,之前我的文章介绍了一种本地大模型加知识库的解决方法。此外,ima知识库的容量大小可以到30GB(企鹅大气),只要管理好文件的格式,理论上是完全可以把机载适航相关的内容容纳进去的。后续会不断增加适航法规,适航规章,适航标准,适航书籍,适航相关的论文,以及网上其他一些优秀的内容。

qq_41854911的博客 1223

P1119 灾后重建【题解】

这道题目描述了一个灾后重建的情境,需要计算在不同时间点村庄之间的最短路径。摘要如下: 题目给出了N个村庄和M条双向公路,每个村庄有重建完成时间ti。只有在某天t重建完成的村庄之间的公路才能通车。对于Q个按时间不降序排列的询问(x,y,t),需要输出在t天时x到y的最短路径长度,若x或y未重建或无法到达则输出-1。 解析指出可以利用Floyd算法,由于村庄按重建时间排序且查询时间不降,可以逐步添加重建完成的村庄作为中间点来更新最短路。代码实现中初始化距离矩阵后,对每个查询处理时,动态添加新重建的村庄并更新最短

cyx20091026的博客 724

十一、增强现实

那都是n年前的老版本了,新版本完全没有这个问题,我就是纠结这个问题,搭建若干环境,又是vmware虚拟机,又是msys2,又是anaconda,又是找机器,折腾了几天,结果通通不是。以一张实际卡片为锚点,通过笔记本的摄像头,在显示器上将一个计算机内的3d物体显示在卡片上,类似于电影上看到的那种全息投影技术;如果你是想在windows环境下开发linux运行程序,那么CygWin/gcc是你的不二之选。而如果你想开发的是windows运行程序,并且追求速度,那么二者相比而言,MinGW是更好的选择。

3188

洛谷P1119 灾后重建 题解

灾后重建 - 洛谷description:一共 个村庄,每个村庄有一个通车时间 。有 条双向边。有 个询问,每次询问一组 ,表示第 天时 之间的最短路径。solution:看到数据范围较小,直接 即可。每次把当前能够修建好的边加入所有 个点的中转点中,,,给定的通车时间和每次的询问都按照时间推移,这是好的,直接做就行了。code:#include<cstdio> #i...

ShineEternal的笔记小屋 427

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【题解】洛谷P1119 灾后重建

题目 洛谷P1119灾后重建 题解 由于询问数Q比较大,不可能每次询问都新建图,所以考虑离线(集中处理询问)。注意到村庄重建时间是不严格递增的,所以在时间t[i]之前,只有编号为0~i的村庄重建完。注意到村庄数n比较小,可以考虑floyd算法,这个算法可以求出任意两点间的最短路,同时,在动态规划过程中,floyd算法也解决了“若只经过编号为0~i的节点,求任意两点间的最短路径”这个子问题。所以,在执行floyd算法的同时,更新符合当前条件的询问的答案。 代码 #incl

zjgmartin的博客 294

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【题解】洛谷P1119 灾后重建(floyed算法)

因为要让每个节点都被考虑到一次,即都被传入floyed一次,所以mid一步一步走,最终所有节点都会被当作中间点传入floyed一次。注意题目和模版的区别,根据区别,优化代码,有可能需要我们优化时间复杂度,这时看看哪个for可以优化,优化的时候,考虑到数据的单调性。mid只要走到2就能保证所有的<=T的节点被考虑到了,因为t数组是单调递增的,不会出现 1 2 3 4 2的情况。而结合这道题中,只有当结点的修建时间<=T时,才能通过,加上t数组的数据和T都是单调递增。而floyed里面又有3层循环。

aA467646767的博客 653

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

P1119 灾后重建 题解

#include <bits/stdc++.h> using namespace std; int a[1039],f[1039][1039],n,m,q; inline void Floyd(int k){ register int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) if(f[i][j]>f[i][k]+f[k][j]) f[i][j]=f[i][k]+f[k][j]; } int main(

cbw3402271334a的博客 316

luogu P1119 灾后重建 题解(最短路)

题目链接: P1119 灾后重建 离noip还有54天然而蒟蒻的我连洛谷的试炼场都没有刷完(我太弱了)于是开始刷题。之后就刷到了这道题。 这是一道最短路的经典题,题目自己打开链接看好吧,我就不粘贴了谢谢(才不是因为我懒)。 对于这道题数组最好从000开始,因为村庄数是从000开始的。 这个题要询问是否两点是否联通(是否修好路了)和最短路。 由于道路在不断的修好所以不同时间的最短路也可...

阿嚏的博客 369

洛谷题解P1119【灾后重建】

题目背景 \(B\)地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响。但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车。换句话说,只有连接着两个重建完成的村庄的公路才能通车,只能到达重建完成的村庄。 题目描述 给出\(B\)地区的村庄数\(N\),村庄编号从\(0\)到\(N-1\),和所有\(M\)条公路的长度,公路是双向的。并给出第\(i\)个...

banliaowu5325的博客 233

【题解】P1119 灾后重建

我感觉这道题的思路十分巧妙,巧妙地利用了 \(Floyd\) 的思想,来做出这道题,不得不说, \(A\) 掉了这题以后,我感觉自己对 \(Floyd\) 的实质了解了更多。 思路 事实上,我们都知道 \(Floyd\) 的标准代码长这样 for(int k=1;k<=n;++k) for(int i=1;i<=n;++i) for(int j=1;j&l...

dkirhf8740的博客 156

题解 洛谷P1119 【灾后重建】

本题基本上是Floyd的模版题,适合初学Floyd的OIer练习。 本题的重点在于并非在每一个时刻,每一个节点都可以到达,所以应枚举目前所有可以到达的节点k,并以k为中转点进行更新。 同时,因为出题人已经给数据排好了顺序,发现未建成时直接中断即可。 闲话少说,主要看代码注释。 #include<cstdio> #include<algorithm> using ...

banliaowu5325的博客 200

洛谷 P1119 灾后重建 ( floyd) 题解

题目来源: https://www.luogu.org/problemnew/show/P1119 题目描述: 题目背景 BB地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响。但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车。换句话说,只有连接着两个重建完成的村庄的公路才能通车,只能到达重建完成的村庄。 题目描述 给出BB地区的村庄数NN,村庄编...

摇摇乐的博客 529

题解 P1119 灾后重建(Floyd多源最短路),附 Floyd 本质

要理解每个算法的本质,根据问题的性质选择有这一特性的算法,不一定是直接运用这个算法,可能需稍加改动,这就非常需要深刻理解算法本质。ti 序列和 t 序列就算不满足单调不减,也可排序之后使其满足,转化成这个问题。每个解决的问题,都可作为工具,下次遇到问题可以通过转化变成已知的问题,算法本身就是已解决的问题,每次做题选择算法就是将未知转化成已知。

Xiaoxiaodezhuren的博客 987

【题解】洛谷P1119 灾后重建(floyd)

这是一个有条件的最短路问题,当时间为t时某个村庄才会被修好,修好的村庄之间的路才能贯通、求最小路,那么我们就记录t数组,在floyd前提条件下判断中间点村庄修好的时间是否小于等于给的时间,得到最短路。如果开头结尾村庄修好的时间比给的时间小或相等,并且开头和结尾的村庄有边相连,那么就输出最短路的答案,否则输出-1   #include&lt;cstdio&gt; #include&lt;ios...

Rem_Inory的博客 395
上一篇: 最大子矩阵
下一篇: 根号算法题库
WerKeyTom_FTD
博客等级 码龄11年 357粉丝 831原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值