洛谷P4768 kruskal重构树

EG2134驱动芯片实战:如何用TSSOP20封装搞定三相无刷电机驱动(附电路图) 本文详细介绍了EG2134驱动芯片在三相无刷电机驱动中的应用实践,包括芯片选型、电路设计和PCB布局技巧。EG2134作为一款高性能半桥驱动芯片,采用TSSOP20封装,适合紧凑型设计。文章还提供了典型应用电路图和调试指南,帮助工程师快速实现稳定可靠的电机驱动方案。 阅读详情
题意:

有nnn个城市,mmm条连接两个城市的道路,每条道路有一个海拔hih_{i}hi​和长度lil_{i}li​。目前这些城市正发洪水,小明家在节点1,他现在需要回家。他有一辆自行车,但这个自行车只能在没有被水淹的道路骑行。对于每条道路,如果道路的海拔不高于当日的水位线,那么这条路就会被淹。小明如果需要经过一条被淹的道路,则需要丢弃他的自行车,然后徒步过去,自行车如果被丢弃了就不能被找回来了。有qqq次询问,每次询问给出小明目前所在的位置xxx和当日水位线hhh,问他回家最少需要步行多长距离?可以认为小明无论骑车还是步行都是无限快的,也就是他回到家之前水位线都是不变的。

Solution:

显然有一些边是不能经过的,并且海拔越低的边越不能经过,所以考虑KruskalKruskalKruskal重构树,由路的海拔为关键词从大到小加入重构树,那么对于目前所在的节点xxx和当日海拔hhh,我们找到一个uuu,满足

val[u]>h,val[fa[u]]<=h val[u]>h,val[fa[u]]<=h val[u]>h,val[fa[u]]<=h

那么这颗以uuu为根的子树的所有点都是我们能够到达的,现在问题是,我们该从哪个我们能到达的节点开始步行回去呢?我们在子树内找到任意一个点,到1的最短路可以计算出来,但又如何减去骑车的部分呢?不妨考虑这样的情况,有一个点AAA,和一副

连通图GGG,AAA不和图联通,定义两点距离为实际距离-在GGG图中经过的边权总和,也就是GGG图不需要花费,随便跑,那么到这个集合的某一点距离的最小值就应该是到这个图的点的实际距离的最小值。所以原问题就变成了uuu这颗子树的到1的最短路的最小值是多少,预处理源点为1的最短路,定义min1[i]min1[i]min1[i]为iii这棵子树的最小最短路距离,那么答案就是min1[u]min1[u]min1[u]了,找这个点倍增即可

// #include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<numeric>
using namespace std;

using ll=long long;
const int N=400005,inf=0x3fffffff;
const long long INF=0x3f3f3f3f3f3f,mod=998244353;

struct wway
{
    int u,v,l,h;
}eedge[N];

struct graph
{
    struct way
    {
        int to,next,w;
    }edge[N<<2];
    int cnt,head[N<<1];
    void add(int u,int v,int w=0)
    {
        edge[++cnt].to=v;
        edge[cnt].next=head[u];
        edge[cnt].w=w;
        head[u]=cnt;
    }
}A,B;

int f[N<<1];

int find(int k)
{
    if(f[k]==k) return k;
    return f[k]=find(f[k]);
}

bool vis[N];
ll dis[N];
int n,m,tot,val[N<<1],fa[N<<1][21],min1[N<<1];
priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<pair<ll,int>>>q;

void KruskalRebuild()
{
    sort(eedge+1,eedge+1+m,[&](const wway& x,const wway& y){
        return x.h>y.h;
    }); 
    tot=n; A.cnt=0;
    for(int i=1;i<=n+m;i++)
    {
        f[i]=i;
        A.head[i]=0;
        val[i]=0;
    }
    for(int i=1;i<=m;i++)
    {
        auto& [u,v,l,h]=eedge[i];
        int pa=find(u),pb=find(v);
        if(pa==pb) continue;
        f[pa]=f[pb]=fa[pa][0]=fa[pb][0]=++tot;
        val[tot]=h;
        A.add(pa,tot); A.add(tot,pa);
        A.add(pb,tot); A.add(tot,pb);
    }
}

void dijkstra()
{
    for(int i=1;i<=n;i++)
    {
        dis[i]=numeric_limits<int>::max();
        vis[i]=false;
    }
    q.push({dis[1]=0,1});
    while(!q.empty())
    {
        int u=q.top().second; q.pop();
        if(vis[u]) continue;
        vis[u]=true;
        for(int i=B.head[u];i;i=B.edge[i].next)
        {
            int v=B.edge[i].to,w=B.edge[i].w;
            if(dis[u]+w<dis[v]) q.push({dis[v]=dis[u]+w,v});
        }
    }
}
//A图是重构树,B图是原图
void dfs(int u,int fa)
{
    if(u<=n) min1[u]=dis[u];
    else min1[u]=numeric_limits<int>::max();
    for(int i=1;i<=20;i++) ::fa[u][i]=::fa[::fa[u][i-1]][i-1];
    for(int i=A.head[u];i;i=A.edge[i].next)
    {
        int v=A.edge[i].to;
        if(v==fa) continue;
        dfs(v,u);
        min1[u]=min(min1[u],min1[v]);
    }
}

ll solve(int x,int k)
{
    for(int i=20;i>=0;i--)
        if(fa[x][i]&&val[fa[x][i]]>k) x=fa[x][i];
    return min1[x];
}

void work()
{
    cin>>n>>m; B.cnt=0;
    for(int i=1;i<=n;i++)
    {
        dis[i]=numeric_limits<int>::max();
        B.head[i]=0;
    }
    for(int i=1;i<=m;i++)
    {
        auto& [u,v,l,h]=eedge[i];
        scanf("%d%d%d%d",&u,&v,&l,&h);
        B.add(u,v,l); B.add(v,u,l);
    }
    dijkstra();
    KruskalRebuild();
    dfs(tot,0);
    int q,K,S; ll lastans=0; cin>>q>>K>>S;
    while(q--)
    {
        int x,h; scanf("%d%d",&x,&h);
        x=((x+K*lastans)-1)%n+1;
        h=(h+K*lastans)%(S+1);
        printf("%lld\n",lastans=solve(x,h));
    }
}

int main()
{
    // freopen("in.txt","r",stdin);
    int T; cin>>T;
    while(T--) work();
    return 0;
}
3款 433MHz 收发模块对比:SYN480R vs RXB6 vs DL-TX19,实测卷帘门遥控距离 本文深度评测了3款433MHz收发模块SYN480R、RXB6与DL-TX19在卷帘门遥控距离、穿透性能和抗干扰能力等方面的表现。通过实测数据对比,分析了超外差、超再生和PLL锁相环技术的优劣,为智能家居和工业控制领域的无线遥控方案选型提供专业参考。 阅读详情

相关推荐

深入了解神经网络:构建人工智能的基石

这篇博客将为您解释神经网络的构造,让您能够理解这个令人着迷的领域的基本工作原理。神经网络是人工智能领域的关键技术,它们的构造基于神经元的灵感,并结合了数学、统计和机器学习的原理。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。较好的方法就是预先设定几个可选值,通过切换这几个值来看整个模型的预测效果,选择效果最好的值作为最终选择。:这是神经网络的核心部分,包含多个层次的神经元。、神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;

AI_dataloads的博客 2万+

洛谷——Kruskal模板

题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz。 输入格式 第一行包含两个整数N,MN,M,表示该图共有NN个结点和MM条无向边。 接下来MM行每行包含三个整数X_i,Y_i,Z_iXi​,Yi​,Zi​,表示有一条长度为Z_iZi​的无向边连接结点X_i,Y_iXi​,Yi​。 输出格式 如果该图连通,则输出一个整数表示最小生成树的各边的长度之和。如果该图不连通则输出orz。 输入输出样例 输入 #1复制 4 5 1 2 2...

小白之比白更白的博客 325

如何从Matlab工作区读取数据,并按时序将数据输入Simulink中

如何从Matlab工作区读取数据,并按时序将数据输入Simulink中 例如:一周掌握 Java 入门知识 学习内容: 提示:这里可以添加要学的内容 例如: 1、 搭建 Java 开发环境 2、 掌握 Java 基本语法 3、 掌握条件语句 4、 掌握循环语句 学习时间: 提示:这里可以添加计划学习的时间 例如: 1、 周一至周五晚上 7 点—晚上9点 2、 周六上午 9 点-上午 11 点 3、 周日下午 3 点-下午 6 点 学习产出: 提示:这里统计学习计划的总量 例如: 1、 技术笔记 2 遍

weixin_44899540的博客 1万+

洛谷P4197 Peaks(Kruskal重构树+倍增+dfs序+主席树)

题目 n(n<=1e5)座山峰,第i座高度hi(hi<=1e9),保证所有hi不同, m(m<=5e5)条边的无向图,q(q<=5e5)组询问, 每次询问给出(v,x,k), 询问从点v出发,只能走不超过x(x<=1e9)的边时, 从高到低第k的山峰的点号,不存在输出-1 思路来源 https://www.cnblogs.com/zwfymqz/p/9683523.html 前置知识(Kruskal重构树) 图片来自于自为风月马前卒博客,很通俗易懂了,

小衣同学的博客 490

FPGA实战:基于Basys3的多功能数字钟设计与实现

本文详细介绍了基于Basys3开发板的多功能数字钟设计与实现过程,涵盖FPGA开发、SystemVerilog编程及7段数码管驱动等关键技术。通过模块化设计实现时钟分频、时间计数、按键处理等功能,并提供了优化显示驱动和调试技巧,帮助开发者快速掌握数字电路设计核心概念。

weixin_29186249的博客 659

Qwen大模型参数解析

Qwen系列模型的参数主要分为(决定模型结构)和(控制生成行为)两类。由于该系列已迭代多个版本,参数设计也在不断演进,我会结合最新版本为你进行分层梳理。

yeyiboy的博客 165

最小生成树构建算法 —— Kruskal算法(克鲁斯卡尔算法)、Prim算法(普里姆算法)

分成两个集合,分别为集合X和集合Y,集合X初始化为图G中的任意一个顶点,剩余的顶点全部放入集合Y中,每次选取集合X到集合Y中的权值最小的边用于构建最小生成树,直到所有的点都被添加进来之后,如果边的条数为 n-1,则构建出来的就是最小生成树。假设原连通图有n个顶点,而极大无环子图要保证连通性,肯定要包含n个顶点,又要保证无环,最多只能包含n-1条边。示例代码设置为类的成员函数,由于篇幅原因并没有在此给出图这个类的全部代码,任给一个有n个顶点的连通图G{V, E},其中V是点集,E是边集。

知其然 知其所以然 1652

人像抠图 + OpenGL ES 还能这样玩?没想到吧(附带源码)

OpenGL ES 利用抠图算法实现人像留色。

字节流动 3万+

洛谷P4197 Peaks(Kruskal重构树 主席树)

题意 题目链接 往后中文题就不翻译了qwq Sol 又是码农题。。出题人这是强行把Kruskal重构树和主席树拼一块了啊。。 首先由于给出的限制条件是&lt;=x,因此我们在最小生成树上走一定是最优的。 考虑把Kruskal重构树建出来,重构树上每个新的节点代表的是边权,同时用倍增数组维护出跳2^i步后能走到的值最大的节点 这样,该节点的整个子树内的节点都是可以走到的。 用dfs序...

weixin_33857230的博客 159

YOLOv12改进策略【独家融合改进】| MobileNetV4+BiFPN,轻松实现降参涨点,适用专栏内所有的骨干替换

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 978

RT-DETR改进策略【卷积层】| ECCV-2024 小波卷积WTConv 增大感受野,降低参数量计算量,独家创新助力涨点

本文记录的是利用模块优化的目标检测网络模型。的目的是在不出现过参数化的情况下有效地增加卷积的感受野,从而解决了在感受野扩展中的参数膨胀问题。本文将其加入到深度可分离卷积中,有效降低模型参数量和计算量,并二次创新,使模块更好地捕捉低频特征,增强网络性能。Wavelet Convolutions for Large Receptive Fields小波卷积及其改进的实现代码如下: 四、创新模块 4.1 改进点1⭐ 模块改进方法:加入(第五节讲解添加步骤)。添加后如下:模块改进方法:基于的(第五节讲解添加步骤)

Limiiiing的博客 1503

洛谷P4768 [NOI2018]归程(Kruskal重构树)

题意 直接看题目吧,不好描述 Sol 考虑暴力做法 首先预处理出从$1$到每个节点的最短路, 对于每次询问,暴力的从这个点BFS,从能走到的点里面取$min$ 考虑如何优化,这里要用到Kruskal重构树 我们按边权的海拔从大到小排序,建出Kruskal重构树 这一定是一个小根堆 那么一个点的子树内的节点一定可以相互到达且经过的最小的海拔为该点权值 那么每次查询的时候,我们只需...

weixin_34410662的博客 149

01-系统技术架构师必备——软件架构设计基础与核心概念

摘要 本文系统阐述了软件架构设计的核心概念与方法论,重点涵盖以下内容:1)软件架构的四大要素(构件、连接件、约束、配置)及其边界划分;2)Garlan & Shaw五大架构风格(数据流、调用/返回、独立构件、虚拟机、仓库)的典型应用场景;3)基于电商库存系统的架构选型实战案例,展示如何根据业务需求(高并发、最终一致性)选择事件驱动架构配合Saga模式;4)介绍ABSD、DSSA等主流架构方法论及ISO/IEEE标准体系。文章融合金融与互联网领域的架构实践经验,为技术架构师提供系统性的知识框架和决策参考。

模界 | AI工程化实践者 181

[洛谷P4768] [NOI2018]归程 (kruskal重构树模板讲解)

洛谷题目链接:[NOI2018]归程 因为题面复制过来有点炸格式,所以要看题目就点一下链接吧\(qwq\) 题意: 在一张无向图上,每一条边都有一个长度和海拔高度,小\(Y\)的家在\(1\)节点,并且他有一部车,车只能在海拔高度大于降水量的道路上行驶,如果某一条边的海拔高度小于等于降水量,那么小\(Y\)就必须下车步行,现在有\(q\)次询问,每次询问从目标点到\(1\)要步行的最短...

dengtun2502的博客 257

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

洛谷 - P4768 [NOI2018]归程(Kruskal重构树+树上倍增+最短路)

题目链接:点击查看 题目大意:去原网址看吧 题目分析:因为是在刷克鲁斯卡尔重构树的题目,所以稍微思考一下就能想出解法了,首先如果水位线固定了,剩下的边组成的最小生成树也是一定的,此时同一个连通块内的点对答案的贡献都是相同的,因为车子可以随便开,这样连通块的贡献,就是连通块内距离点 1 最近的点了 这样如何找相应的连通块呢?可以对所有边降序排序,建立克鲁斯卡尔重构树,对于点 x 来说,找到权值大于水位线,且深度最小的祖先,这一步可以用树上倍增来完成,此时这个祖先的子树中的点两两都可以互相达到了,显然包括

Falcon的博客 561

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

浅谈kruskal重构树

食用须知: *因为临时改动,代码不一定完全正确。 *以下概念来自个人理解,并不十分准确。慎! <Kruskal重构树思想与模板> Kruskal算法(维护无向图的最小生成森林):每一时刻,从没有选择过的边中选择一条权值最小的且这条边所连接的两个端点不在同一棵树上(不连通),就把该边加上,该边的两个点即为连通。连通情况可以用并查集维护。 ...

qq_40681184的博客 413

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【NOI2018】归程(可持久化并查集,Dijkstra)

Description https://www.luogu.org/problemnew/show/P4768 Solution 如果没有强制在线,我们先预处理出距离1的最短路,将询问和边按海拔从大到小依次加入,用并查集维护当前联通块内距离1最近的点即可。 如果强制在线,用可持久化并查集即可。 时间复杂度O(nlog2n)O(nlog2⁡n)O(n\log^2 n),用Krusk...

დ♂Hany01's Blog Space♂ღ 488

Luogu-P4768 (Kruskal重构树+最短路)

题目链接 思路 按照海拔降序建重构树,这样每个节点的子树能表示海拔大于等于它的所有点 预处理所有点到1的最短路 对于每个询问找到最低的海拔高度,然后找子树中所有点到1的最小值 找子树中最小值,可以在建重构树的时候预处理出来,不用每次都dfsdfsdfs这样会超时… #include <bits/stdc++.h> const int maxn = 1e6 + 5; const in...

Running Bit. 438

【洛谷】P4768

图论 #最短路 #重构树 #倍增。

Antonio915的博客 896

【NOI2018】洛谷4768归程题解(最短路+Kruskal重构树+LCA+树上倍增)

题目:luogu4768. 题目大意:给定一张nnn个点mmm条变的无向图.现在给定qqq组询问,每次询问v,pv,pv,p表示从点vvv出发,可以通过所有边权小于ppp的边走到任意一个点,从这个点到111的最短路长度最小,求最短路. 数据组数≤3\leq 3≤3,1≤n≤2∗105,1≤m,q≤4∗1051\leq n\leq 2*10^5,1\leq m,q\leq 4*10^51≤n≤2∗1...

hzk_cpp的博客 415

LOJ#2718 & 洛谷P4768 [NOI2018] 归程 Kruskal重构树+Dijkstra

题目链接: LOJ2718 洛谷P4768 kruskalkruskalkruskal重构树不会的话珂以看这篇题解qwq 这道题考虑把边按照海拔从大到小排序,让重构的树成为一棵以海拔为关键字的小根堆。 重构树的每个节点记录两个信息val,disval,disval,dis,分别表示当前节点子树内最小的海拔和最小到111的距离,其中叶子节点(即原图的节点)val=0val=0val=0。 对于每个询...

The_OIer的博客 314

Luogu4768 NOI2018 归程

题面:luogu4768 题意:给定一张nnn个点mmm条边的无向连通图,每条边有长度和海拔。给qqq个询问,强制在线,每次询问指定一个水位线ppp和出发点vvv,能够从vvv开始无代价走过若干条海拔大于ppp的边到达v′v&#x27;v′后,再从v′v&#x27;v′花路线长度的代价走到111号节点。求最小代价。n≤2×105,m≤4×105,q≤4×105n \le 2 \ti...

wennitao的博客 863

洛谷 P4768 [NOI2018]归程

题目:归程&归程+ 思路: 1、一种海拔 30’ 求最短路。 询问时,海拔==0,输出0;否则输出dist[v]。 2、链 15’ 离散化。 预处理出不同海拔、每个点开始到起点的答案,查表输出。 3、树 10 树上倍增。 4、 kruskal重构树+树上倍增。 做kruskal时,在并查集路径压缩时,同时存下树的心态。 即,在最小生成树连边时,新建一个节点,权为边权,作为两节点的父节点。...

iwi 421

【NOI2018DAY1T1】【洛谷P4768】—归程[Return](Kruscal重构树)

传送门 重构树简单题 和PeaksPeaksPeaks相似,还要简单一些 考虑到低于水位线的边都会被淹没 那显然我们做最大生成树后树上路径就是最优的情况 多次询问考虑KruscalKruscalKruscal重构树 显然对于当前一个要求的的水位和点 我们倍增找到第一个刚好大于水位线的点 那显然答案就是该点的子树中所有叶子节点到111的最短的一条 直接最短路后树形dpdpdp预处理一下就可以了 复杂...

Stargazer的博客 252

BZOJ5415 [Noi2018]归程(洛谷P4768)

BZOJ5415: [Noi2018]归程(洛谷P4768) Kruskal重构树 BZOJ题目传送门 洛谷题目传送门 这道题做法很多,我所知道的还有可持久化并查集(同学写了这个),因为离线是用并查集做,那么在线就可持久化一下。BZOJ上有可持久化并查集这道题。 这里采用Kruskal重构树。先Dijkstra+heap预处理出其他点到1的最短路,再以海拔为第一关键字构造Kruska...

forezxl的博客 270

LOJ.2718.[NOI2018]归程(Kruskal重构树 倍增)

LOJ2718 BZOJ5415 洛谷P4768 Rank3+Rank1无压力 BZOJ最初还不是一道权限题... Update 2019.1.5 UOJ上被hack了....好像是纯一条链的数据过不了,不管了....现在不想改。 容易想到按高度Kruskal重构树+预处理到点1的距离dis。 建一棵最大生成树,如果随便建的话,如果非树边能走,整棵树都能走答案当然是0...;如果有些...

weixin_30474613的博客 104
上一篇: Codeforces 1741G 最短路上状压dp
下一篇: Codefoces 1744F mex和med问题
stdforces
博客等级 码龄4年 9粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值