In Touch HDU- 5361(最短路+并查集)

C#上位机+YOLO工业视觉全实战:从ONNX部署到产线缺陷检测落地(2026年工业级实战指南) 在2026年,工业视觉落地的核心挑战不是“能不能做”,而是“能不能在产线实时跑起来C#为何成为最优解? 阅读详情

There are n soda living in a straight line. soda are numbered by 1,2,…,n from left to right. The distance between two adjacent soda is 1 meter. Every soda has a teleporter. The teleporter of i-th soda can teleport to the soda whose distance between i-th soda is no less than li and no larger than ri. The cost to use i-th soda’s teleporter is ci.

The 1-st soda is their leader and he wants to know the minimum cost needed to reach i-th soda (1≤i≤n).
Input
There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:

The first line contains an integer n (1≤n≤2×105), the number of soda.
The second line contains n integers l1,l2,…,ln. The third line contains n integers r1,r2,…,rn. The fourth line contains n integers c1,c2,…,cn. (0≤li≤ri≤n,1≤ci≤109)
Output
For each case, output n integers where i-th integer denotes the minimum cost needed to reach i-th soda. If 1-st soda cannot reach i-the soda, you should just output -1.
Sample Input
1
5
2 0 0 0 1
3 1 1 0 5
1 1 1 1 1
Sample Output
0 2 1 1 -1

Hint
If you need a larger stack size,
please use #pragma comment(linker, “/STACK:102400000,102400000”) and submit your solution using C++.

思路这题在做的的时候,是看出来是最短路了,但是在极端情况下,边的个数会达到n方,交了一发果然超时了,一直在想怎么优化,没想到啊 …用并查集的思想了。差一点。
代码

#include <cstdio>
#include <vector>
#include <queue>
#include <cmath>
#include<iostream>
#include <cstring>
#define maxx 200005
using namespace std;
 typedef long long LL;
const LL INF = 1LL<<62;
int l[maxx],r[maxx];
int w[maxx];
int pre[maxx];
int findd(int x)
{
    return pre[x]==x?x:pre[x]=findd(pre[x]);
}
int n;
long long dis[maxx];
struct node
{
    long long val;
    int index;
    node(long long x, int y)
    {
        val=x;
        index=y;
    }
    bool operator<(const node& b) const {
        return val > b.val;
    }
};
void init(int x)
{
    for(int i=1;i<=x;i++)
        pre[i]=i,dis[i]=INF;
}
void spfa()
{
    init(n+3);
    priority_queue<node> que;
    dis[1]=w[1];
    que.push(node(dis[1],1));
    while(que.size())
    {
        node temp=que.top();que.pop();
        int u=temp.index;
        for(int i=-1;i<=1;i+=2)
        {
            int L=u+i*l[u];
            int R=u+i*r[u];
            if(L>R)swap(L,R);
            L=max(L,1);
            R=min(R,n);
            if(L>R)
                continue;
            int now=L;
            for(;;)
            {
                now=findd(now);
                if(now<=0||now>R)
                    break;
                if(dis[now]>dis[u]+w[now])
                {
                    dis[now]=dis[u]+w[now];
                    que.push(node(dis[now],now));
                }
                pre[findd(now)]=findd(now+1);
            }
        }
    }
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        cin>>n;
        init(n+1);
        for(int i=1;i<=n;i++)
            scanf("%d",l+i);
        for(int i=1;i<=n;i++)
            scanf("%d",r+i);
            for(int i=1;i<=n;i++)
            scanf("%d",w+i);
        spfa();
        cout<<0;
        for(int i=2;i<=n;i++)
            printf(" %lld",dis[i]==INF?-1:dis[i]-w[i]);
        cout<<endl;
    }
    return 0;
}
NVIDIA Omniverse 技术浅析(二):USD 例如,一个用户可以负责场景的几何体设计,另一个用户可以负责材质和灯光的调整。USD 的开放性和可扩展性,结合 Omniverse 的 Kit 扩展框架,使得用户和开发者可以创建自定义的应用程序和工具,以满足特定的需求。USD 的材质和物理属性系统,结合 Omniverse 的 RTX 实时渲染技术,使得用户可以在虚拟环境中看到逼真的光影效果和物理模拟。USD 的时间轴和动画功能,结合 Omniverse 的物理属性系统,使得用户可以为虚拟环境中的元素创建复杂的动画和物理模拟。 阅读详情

相关推荐

CANopen中SDO、PDO字典以及COB-ID理解

CANopen SDO PDO

sunarmy的专栏 2万+

HDU - 5361

题意:n个点,可以在点和点之间互相跳,给出在每个点跳一次的花费,以及他可以跳到的范围,求从第一个点跳到所有点的最小花费。很像单源最短路,但直接暴力肯定不行,因为是从第一个点开始跳,发现已经跳到的点一定是最小花费,后续不需要在考虑这个点,因此可以想办法优化掉,第一个想到的是双向链表,但发现维护起来并不合适,后来又想到直接用并查集就可以了,用并查集求每个点右边的第一个没去掉的点,也就是可以入队的点。去...

jerans的博客 242

MQTT阿里云OTA 调试记录

2.验证,这个验证是什么意思呢,就是阿里云会把你包的信息,比如包大小,streamid(相当于包的识别码),版本号发送给你的设备,然后如果你没发送升级成功的包给阿里云,这里会是一直验证中的状态,那你的设备每次重新连接阿里云,发送connect包给阿里云的时候,阿里云就会发送一次这个验证(upgrade)包。提取到了之后就可以发送请求包了,这个请求包比较坑,也可能是我没付费,他的包一次最多只有1024个字节的数据。之前说了,验证状态下,设备发送connect包给阿里云,阿里云就会发一个upgrade包给你。

qq_42585211的博客 1231

HDU 5361(最短路+并查集优化)

比较奇怪的最短路……         每个人往离他距离大于等于l,小于等于r的点有连边,而且权值一样大。然后问从起点到达每个点的最短距离。         首先我们明确一点,肯定不能建图。因为我每个点的l、r可能很大,也就意味者,每个点连出去的边可以很多,边的数量可以到达N^2的级别。这也就意味着不能用spfa,因为边本身就不可能枚举。于是只能用dijkstra。这题用dijkstra还有一个优点就是,dijkstra中可以保证,如果一个点已经被更新过,那么这个点不可能再被更新,即每个点只能被更新一次。总共

alpc_qleonardo 706

LABVIEW学习之MODBUS-TCP通讯

LABVIEW学习之MODBUS-TCP通讯 1,MODBUS-TCP通讯介绍: MODBUS通讯是工业上面经常用到的一种通讯协议。该协议的原理及介绍不在此累述,下面直接介绍LABVIEW对此协议的应用。 2,MODBUS通讯所需的函数: 安装了DSC模块之后可以在数据通信内找到相关函数 3 ,主VI 主要思路就是使用状态机来进行连接 读取 写入 断开。使用枚举类型来选择状态: 1,连接 2,写入多个M继电器: 3,写入单个M继电器 4,写入双字节D...

风动9527的博客 2万+

详解APM的开方控制器sqrt_controller

前言 前面说过,sqrt_controller是对P项进行整定用途的,目的就是让P项的控制响应“软”下来,实际上就是一个经过改进的P控制器。读懂了sqrt_controller,那么你对APM的P控制器就了解得差不多了。 仅讨论P控制器,sqrt_controller的作用就是设定一个量linear_dist,以这个量的正负值为分界线划分出一个线性区域范围,在这个范围内表示误差量还很小,遵循Kp*error计算方式输出控制量。 超过linear_dist后,表明误差较大,此时不能由着误差单纯按照线性方式乘以

moumde的博客 4896

HDU 5361 (优先队列 线段树)

In Touch Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1876    Accepted Submission(s): 510 Problem Description There are n soda

morejarphone~ 759

ros2 gazebo仿真阿克曼小车搭载livox mid360雷达流程

流程简介:仿真环境的搭建需要安装ROS2和Gazebo。使用的是Humble版本,需要确认是否已经正确安装。然后是阿克曼小车模型的URDF,需要包括底盘、转向机构、驱动轮等,需要参考现有的阿克曼模型,比如ClearPath的Husky,但需要调整参数。Livox Mid360雷达在Gazebo中的仿真可能没有现成的插件,需要使用通用3D LiDAR插件来模拟。IMU的仿真相对简单,但需要注意噪声模型,以接近真实数据。

weixin_43802726的博客 3211

In Touch (hdu 5361 优先队列的Dij + 并查集优化)

题意:有n个点站成一排,相邻距离为1,每个点 i 可以联系上距离自己 x 的点并且花费Ci,其中Li<=x<=Ri,从点1开始,求联系到每个点的最少费用。 思路:边太多,不可能建完边后再求最短路,感觉有点像隐式图,然后就是巧妙用到Dijstra,需要注意到的就是,这里是每个点有权值而不是边,那么dist[i]表示从1到 i 的花费再加上点 i 的花费,这样每个点就只会被更新一次,更新后在以后就不会再次被更新了,这里用到并查集把已经更新的点得father指向还没被更新的点。

@you! 1032

ISP一键下载电路分析+74HC1G66GW(信号图)

之前要不用的最小系统的开发板要不就是用的SWD调试口,没有注意过ISP一键下载电路是个怎么回事,因为需要就简单的看了一下野火的ISP一键下载电路。 默认情况一下,一般我们的程序都是从用户闪存也就是内部的FLASH启动的, 对于F103RCT6来说ROM的大小是512kb,启动地址位0x8000000,这个在IDE keil里可以看的到,如下图。 首先简单理解一下ISP是什么: 可以把他理解为芯片厂商出场时固化在ROM当中的一段程序,它的功能就是把你写的程序一点点的搬运到FLASH当中,它引出了两个引脚

lipengyu1363658871的博客 4861

AutoSAR配置视频讲解:总目录

AutoSAR实验视频讲解:闪烁一颗LED实验【总目录】 欢迎大家来到雪云飞星的《AutoSAR实验视频讲解》,本专栏是一个关于AutoSAR的闪烁LED灯的实验课程,一共8节课,每节课的视频都放在文章最后,传送门如下: 前言 AutoSAR实验视频讲解:简介 EB 的Mcal配置 AutoSAR实验视频讲解:Mcal配置 DaVinci Cfg配置 AutoSAR实验视频讲解:新建DaVinci工程 AutoSAR实验视频讲解:Os配置(预计2021-3-10更新) AutoSAR实验视频讲解:检查校验报

雪云飞星的博客 2万+

Assign banana to monkeys

Problem description: There are N Monkeys and N bananas are placed in a straight line. Each monkey want to have a banana, if two monkeys want to own the same banana, there will be a fight! A monkey ca...

Hello World程序员的博客 2441

Android16 RK3576 Bluetooth source和sink模式切换

摘要:本文介绍了在RK3576平台上实现蓝牙A2DP模式动态切换的修改方案。通过在device配置文件中添加A2DP Sink相关属性,修改Bluetooth模块代码实现:1)在Config.java中增加persist.bluetooth.rka2dpsink属性控制模式切换;2)修改A2dpSinkStreamHandler.java取消音频焦点限制;3)调整btif_a2dp_sink.cc默认授予音频焦点。最终通过设置persist.bluetooth.rka2dpsink属性为true/false

tzj1058756809的博客 860

hdu 5361 In Touch(最短路+并查集)

题目链接:hdu 5361 In Touch 最短路,D[i]表示从i节点出发时最短距离,最后答案减掉C[i]即可。然后用并查集优化维护处理过的节点。 #pragma comment(linker, "/STACK:102400000,102400000") #include #include #include #include using namespace std

不慌不忙、不急不躁 1037

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

HDU - 5361 In Touch 线段树 + 最短路 || 并查集 + 最短路

HDU - 5361 直接用线段树维护最短路, 每次取出最小的去扩展。 好像还有nb的并查集写法。 #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc++.h> #define LL long long #define LD l...

weixin_30266885的博客 170

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDU5361In Touch (最短路+并查集)

题目描述:   有n个传送机排成一排,编号从1到n,每个传送机都可以把自己位置的东西传送到距离自己[l, r]距离的位置,并且花费c,问从1号传送机到其他传送机的最小花费是多少 思路:  从第一个点开始更新, 更新过的点从未被更新的点中除去, 因为在Dijkstra里 每次取出的都是最小的distance, 所以更新过的点 后面肯定不需要再次更新。更新一个点后加入堆中

Rain 563

[HDU5361]In Touch

没想到还有这种骚操作,长见识了。

七代目鸽影 230

HDU 5361 In Touch

Problem Description There are n soda living in a straight line. soda are numbered by 1,2,…,n from left to right. The distance between two adjacent soda is 1 meter. Every soda has a teleporter. Th

Occult 967

HDU5361 In Touch

题目描述:In Touch Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1634 Accepted Submission(s): 440Problem DescriptionThere are n soda living

ruclion的专栏 423

HDU 5361 In Touch (优先队列+并查集优化)

题意:求源点到所有点的最短距离。每个点只能到达与它相距l到r之间的点,且这个点到达这些点的花费都为c。 思路:这道题和普通最短路的区别是这个图有可能是个极为稠密的图,那么对于dijkstra算法来说时间复杂度太高, 注意到这题有一点特殊之处,每一点连出去的边的边权是相同的,也就是说一个点与源点之间的最短路只会更新一次,也就是说之后我们就可以不考虑更新这个点的最短路了,所以我们可以考虑用

GODSPEED 610

HDU5361 In Touch(最短路 + 线段树)

/** 题意:一条n个点,第i个点可以到达[i - Ri, i - Li], [i + Li, i + Ri]的任意一个点,花费为Ci,问第1个点 到其他各点的最小花费 思路:Dijkstra + 线段树维护,遇到要更新的data值的时候, 如果data大于等于线段树该节点的最大值,则不更新, 如果小于该节点的最小值,则这个区间的每个点更新,然后放进优先队列,线段树维护的是1到区间[l, r]最...

hnust_Derker的博客 447

HDU 5361 In Touch(最短路 + 线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5361 题意:求1点到其他点的最短路,某点在与其相差在[L, R]范围的点有连边 思路:普通的最短路经不起这么多边和状态,可以维护一颗线段树来维护当前区间的更新情况,再用优先队列去维护到下个点的最小值,用队列当前取出的点去更新区间并将被更新的点入队 #include...

Tongqi 732

HDU5361 In Touch (dij)

题意:求1到其余的点的最短路。只不过这个边有些特殊,是可以到达一个区间的范围的点。 思路:可以想到每个点最多更新一次,利用dij做法的话。跟平常dij不同的是,因为1个点到区间范围内的点的花费相同,座椅每次更新出来的最小值应当是dis[u]+cost[u]。堆应当按照这个排序,才能确保更新的值最优。 然后区间覆盖的问题,我们可以利用并查集来维护。#include <cstdio> #includ

樱花满地集于我心,楪舞纷飞祈愿相随 339

HDU 5361 In Touch(并查集实现区间删除)

In Touch Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 2302    Accepted Submission(s): 617 Problem Description There are n soda

yasolx的博客 518

Hdu 5361 In Touch (dijkatrs+优先队列)

题目链接:   Hdu 5361 In Touch 题目描述:   有n个传送机排成一排,编号从1到n,每个传送机都可以把自己位置的东西传送到距离自己[l, r]距离的位置,并且花费c,问从1号传送机到其他传送机的最小花费是多少?? 解题思路:   看了题解发现是dijkstra(求最短单源路径)+并查集(优化),刚开始的时候并不知道怎么用并查集优化,然后就提交了一个没有并查集的代码,...

weixin_30336061的博客 152
上一篇: Pagodas HDU - 5512 (数论)
下一篇: Addition Chains POJ - 2248(加深迭代搜索)
coldfresh
博客等级 码龄10年 107粉丝 405原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值