[BZOJ1880][Sdoi2009]Elaxia的路线(最短路+拓扑序)

实战指南:将MediaPipe封装为Windows DLL,实现C++/C#高效调用 在计算机视觉和多媒体处理领域,跨平台框架为开发者提供了强大的算法模型和计算能力。其核心原理在于通过预训练的机器学习模型和优化的计算图,实现对图像、视频流中特定目标(如人脸、手势、姿态)的实时检测与分析。这项技术的价值在于能够将复杂的AI能力模块化,降低应用开发门槛。在实际工程实践中,为了突破特定语言生态的限制并优化部署流程,开发者常需将核心功能封装成独立的库。例如,将Google的MediaPipe框架封装为Windows动态链接库(DLL),就是一个典型的工程实践。此举能有效解决语言壁垒和部署简化问题,使 阅读详情

=== ===

这里放传送门

=== ===

题解

首先我们可以知道如果把所有最短路上的边挑出来,再按照最短路中dis数组的递推关系给它加上方向的话这就是一个有向无环图。而如果把所有两个最短路的公共边挑出来的话,这个有向无环图中的最长链就是答案。并且判断一条边在最短路上的方式就是 dis[s→u]+w(u,v)+dis[u→t]=dis[s→t] 。并且因为这是无向图,所以求任意一个点到终点的距离只需要以终点为起点再跑一遍最短路就可以了。需要注意的问题就是公共路径从不同的方向经过也是可以的,所以需要把一对起点和终点倒过来再做一遍。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#define clear(x)(memset(x,127,sizeof(x)))
#define inc(x)(x=(x%5000)+1)
using namespace std;
int n,m,p[2000],a[1000010],next[1000010],d1[2000],d2[2000],d3[2000],d4[2000],w[1000010];
int x1,y1,x2,y2,tot,cnt,point[2000],ans,L[2000],*f,*g,*F,*G;
struct edge{
    int to,w,nxt;
}e[600010];
void add(int x,int y,int v){
    tot++;a[tot]=y;w[tot]=v;next[tot]=p[x];p[x]=tot;
}
void addedge(int x,int y,int v){
    cnt++;e[cnt].to=y;e[cnt].w=v;e[cnt].nxt=point[x];point[x]=cnt;
}
void SPFA(int s,int *d){
    int q[5000],head,tail;
    bool ext[3000];
    memset(ext,false,sizeof(ext));
    head=0;tail=1;q[tail]=s;d[s]=0;ext[s]=true;
    while (head!=tail){
        int u;inc(head);u=q[head];ext[u]=false;
        for (int i=p[u];i!=0;i=next[i])
          if (d[a[i]]>d[u]+w[i]){
              d[a[i]]=d[u]+w[i];
              if (ext[a[i]]==false){
                  inc(tail);q[tail]=a[i];ext[a[i]]=true;
              }
          }
    }
}
bool init(int i,int num,int *ds,int *dt,int len){
    return (ds[i]+dt[a[num]]+w[num]==len);
}
void find_long(int s1,int t1,int s2,int t2){
    int q[5000],head,tail,in[3000];
    memset(in,0,sizeof(in));
    memset(point,0,sizeof(point));
    memset(L,0,sizeof(L));
    for (int i=1;i<=n;i++)
      for (int j=p[i];j!=0;j=next[j])
        if (init(i,j,f,g,f[t1])&&init(i,j,F,G,F[t2])){
            addedge(i,a[j],w[j]);++in[a[j]];//加入有向边
        } 
    head=tail=0;
    for (int i=1;i<=n;i++)
      if (in[i]==0) q[++tail]=i;
    while (head!=tail){
        int u;inc(head);u=q[head];
        for (int i=point[u];i!=0;i=e[i].nxt){
            int v=e[i].to;
            L[v]=max(L[v],L[u]+e[i].w);
            ans=max(ans,L[v]);//求最长链的同时更新答案
            --in[v];
            if (in[v]==0){inc(tail);q[tail]=v;}
        }
    }
}
int main()
{
    scanf("%d%d",&n,&m);
    scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
    for (int i=1;i<=m;i++){
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        add(u,v,w);add(v,u,w);
    }
    clear(d1);clear(d2);clear(d3);clear(d4);
    f=d1;g=d2;F=d3;G=d4;
    SPFA(x1,f);SPFA(y1,g);SPFA(x2,F);SPFA(y2,G);
    find_long(x1,y1,x2,y2);
    swap(F,G);//交换起点和终点(x2,y2),交换最短路数组的指针
    find_long(x1,y1,y2,x2);
    printf("%d\n",ans);
    return 0;
}

偏偏在最后出现的补充说明

通过最短路构造出的图啊树啊总是可以来做一些奇怪的事情?

正弦波、方波、三角波和锯齿波信号发生器——Multisim电路仿真 调节方波信号的占空比,也就是改变输出信号的高低电平时间比例,可以设置电容不同的充放电时间来达到目的,RP2可以使得电容具有不同的充放电时间,其中二极管起到限制电流流向的作用。假设U+>U,那么输出端就达到正向饱和,电容开始充电,当电容电压大于同相输入端电压时,此时电容开始放电,由此往复,从而产生方波信号。3,正反馈支路占优势,电路开始起振并不是稳定的,振荡会不断增大,最终将导致运放饱和,输出的波形是削波失真的正弦波。通常在电路中引入负反馈,例如使用负温度系数的热敏电阻,以自动稳定增益,防止输出波形失真。 阅读详情

相关推荐

从Oracle到腾讯TDSQL数据库升级技术分享

腾讯TDSQL(Tencent Distributed SQL)是一款兼具关系数据库和NoSQL数据库优点的新型数据库,文章主要分享oracle升级为TDSQl数据库技术经验。

u012372850的专栏 2614

【BZOJ1880】[Sdoi2009]Elaxia的路线(最短路)

【BZOJ1880】[Sdoi2009]Elaxia的路线(最短路) 题面 BZOJ 洛谷 题解 假装我们知道了任意两点间的最短路,那么我们怎么求解答案呢? 不难发现公共路径一定是一段连续的路径(如果不连续那么显然可以把中间分开的那段变成一样路径)。 这样子我们只需要\(O(n^2)\)枚举这个路径的起点和终点\(check\)一下就可以知道答案了。 然而并没有办法求任意两点之间的最短路,因为这样...

weixin_30615767的博客 161

UE5 StateTree实战:用分层状态机重构你的AI行为逻辑(附蓝图配置避坑点)

本文详细介绍了UE5中StateTree分层状态机的实战应用,帮助开发者重构AI行为逻辑。通过核心概念解析、迁移策略、高级技巧和避坑指南,展示了StateTree在灵活性、可维护性和并行处理方面的优势,特别适合复杂AI行为的开发与优化。

weixin_42558257的博客 249

【BZOJ 1880】 [Sdoi2009]Elaxia的路线

思路题:spfa+topsort~

Regina8023 1496

STM32异常与中断过程详解

1. 异常与中断概念引入 异常主要是指来自CPU内部的意外事件,比如执行了未定义指令、算术溢出、除零运算等发生在CPU内部的意外事件,这些异常的发生,会引起CPU运行相应的异常处理程序;中断一般来自硬件(如片上外设、外部I/O输入等)发生的事件,当这些硬件产生中断信号时,CPU会暂停当前运行的程序,转而去处理相关硬件的中断服务程序。但无论是异常还是中断,都会引起程序执行偏离正常的流程,转而去执行异常/中断的处理函数。 下面对异常和中断的介绍,如果中断信号的产生原因来自CPU内部,则称之为异常;如果中断信号来

luobeihai的博客 1万+

用友T3提示,年度[UFDATA_002_2017]并不存在,导致无法备份迁移。

用友T3提示,年度[UFDATA_002_2017]并不存在,导致无法备份迁移。现在都win11了某个年度账套不存在怎么办?

雨季余静的博客 3565

HDU 4109 拓扑排序(最短路思想)关键路径

题目网址 http://acm.hdu.edu.cn/showproblem.php?pid=4109 题目是阿里巴巴2011年校园赛题目 Source:2011 Alibaba-Cup Campus Contest 所以题目里面有Ali。 题目我觉得满难懂,大概说下题目意思。题目说电脑要处理不同的指令,电脑可以多任务运行,也就是说电脑CPU一次可以处理多个任务,题目里面没有说,所以可以认

Yuki_fx的博客 1276

别再傻傻分不清了!Anaconda和Miniconda到底选哪个?附保姆级安装与镜像源配置(Windows/Mac)

本文详细解析了Anaconda和Miniconda的核心差异,包括体积、预装内容、系统资源占用等关键维度,并提供了针对不同需求的决策框架。附有Windows和Mac双平台的详细安装与配置指南,帮助用户根据实际需求选择最适合的conda工具,提升开发效率。

weixin_30315723的博客 426

bzoj 1880 最短路径图

#include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PII pair<int, int> #define y1 skldjfskldjg #define y2 skldfjsklej...

168

别再怕DRIVER_VERIFIER_DMA_VIOLATION蓝屏:手把手教你用WinDbg分析IOMMU与驱动冲突

本文深入解析DRIVER_VERIFIER_DMA_VIOLATION蓝屏错误,从IOMMU原理到实战排错,手把手教你使用WinDbg分析驱动冲突。通过理解DMA与IOMMU的核心机制、搭建分析环境、解读DMAR表与设备拓扑,最终定位问题驱动并提供解决方案,帮助开发者和IT运维人员有效应对此类系统崩溃问题。

weixin_30298497的博客 803

Python爬虫反爬:突破Cloudflare 5秒盾(免费方案,小红书/知乎可用)

这套方案的核心优势是“真实模拟+免费无门槛”无需付费代理、无需复杂JS解密,仅用playwright模拟真实浏览器,即可突破Cloudflare 5秒盾;适配小红书、知乎、豆瓣等主流平台,修改配置即可复用;兼顾易用性和稳定性,新手也能快速上手,企业级场景可通过IP轮换、异步爬取进一步优化。“模拟人类行为到底”——Cloudflare的反爬本质是区分“机器”和“人类”,只要爬虫的浏览器指纹、行为特征与人类一致,就能稳定绕过限制。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2881

P2149 [SDOI2009]Elaxia的路线

四次SPFA求最短路 枚举边 使得他是两个人的公共路径 i-&gt;to dist[start][i]+len+dist[end][to]==dist[1][end] 反向也有可能 再次枚举即可 建新图 跑拓扑排序 更新ans最大值 #include &lt;bits/stdc++.h&gt; using namespace std; #define MOD (int)(1e9+7...

CODER的博客 302

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【BZOJ1880】【SDOI2009】Elaxia的路线

Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间。Elaxia和w**每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提下,一起走的时间尽可能的长。 现在已知的是Elaxia和w**所在的宿舍和实验室的编号以及学校的地图:地图上有N个路 口,M条路,经过每条路都需要一定的时间。 具体地说,就

dcx2001的博客 320

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

BZOJ 1880 Sdoi2009 Elaxia的路线 SPFA+拓扑排序

题目大意:给定一张无向图,求s1到t1与s2到t2的最长公共最短路 以s1 t1 s2 t2为源做4次最短路 如果某条有向边满足s到起始点的距离+边长+终点到t的距离=s到t的最短路 那么这条边就可以在s到t的最短路上 我们把所有既在s1到t1的最短路上也在s2到t2的最短路上的有向边都拎出来 容易证明这个图一定没有环 因此拓扑排序求最长链即可 写完发现过不去样例。。。 因为这题题目描

世界 2736

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

BZOJ1880: [Sdoi2009]Elaxia的路线(最短路)

1880: [Sdoi2009]Elaxia的路线 Time Limit:4 SecMemory Limit:64 MBSubmit:2049Solved:805 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1880 Description: 最近,Elaxia和w**的关系特别好,他们很想整天在一起...

dft539533的博客 167

[BZOJ1880][Sdoi2009]Elaxia的路线

题目描述 最近,\(Elaxia\)和\(w\)的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间。 \(Elaxia\)和\(w\)每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提下,一起走的时间尽可能的长。 现在已知的是\(Elaxia\)和\(w\)所在的宿舍和实验室的编号以及学校的地图:地图上有\(N\)个路 口,\(M\)...

145

BZOJ1880 SDOI2009 Elaxia的路线 最短路+拓扑排序

题意:给定两个点对和一张无向图,求两个点对的最短路中,重边边权和的最大值 题解: 首先从给出的四个点出发跑出到其他所有点的最短路,然后判断哪些边是重边。找出所有重边后,将其构有向图,在该图上用拓扑排序求最长路。 开始的时候枚举每一条边我没有建反向边,而是每次判定的时候互换一下边的始末点看是否合法,结果最后一个点死活过不去。后来上网搜题解才知道,必须建反向边,与原边分别判断。果然偷懒...

a18700013354的博客 196

BZOJ1880: [Sdoi2009]Elaxia的路线|dijksrtra|暴力

貌似这题正解是spfa后 什么拓扑排序 其实完全不用酱紫…… 先用dijkstra求出s1 s2 e1 e2 到其他点的单元最短路 的四个数组ds1 ds2 de1 de2 然后枚举所有的 “路径” 这个路径可以是包括多条边   所以不用拓扑排序 枚举每一对点i j  如果这两个点都在两个最短路上  那么这两个点之间的最短路一定可以作为重叠部分  然后这两个点之间的最短路可以用已求得

ws_yzy的博客 1028

BZOJ-1880-Elaxia的路线-SDOI2009-SPFA+拓扑排序

描述 就是求两对点之间 (s1,t1 和 s2,t2) 最短路的最长重合距离 分析 首先要有可以快速判断一条边是否在最短路上的方法, 可以用SPFA分别跑出以s1, t1, s2, t2四个点为起点的单源最短路, 判断时例如如果 d_s1[u] + d_t1[e.to] + e.dist == d_s1[t1], 那么边就在s1, t1的最短路上.确定一些在最短路上的

ghy1953 884

【39.87%】【BZOJ 1880】[Sdoi2009]Elaxia的路线

Time Limit:4 SecMemory Limit:64 MB Submit:1041Solved:415 [Submit][Status][Discuss] Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间。Elaxia和w**每天都要奔波于宿舍和实验室之间,...

AWCXV 101

bzoj1880 [SDOI2009]Elaxia的路线

题目描述 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间。Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提下,一起走的时间尽可能的长。 现在已知的是Elaxia和w**所在的宿舍和实验室的编号以及学校的地图:地图上有N个路 口,M条路,经过每条路都需要一定的时间。 具体地说,就是要求无向图...

dizou7578的博客 157

洛谷·bzoj·[Sdoi2009]Elaxia的路线

初见安:这里是传送门:洛谷P2149 & bzoj P1880

樱狸✨愿携清风归来处 401

【SDOI2009】【BZOJ1880】Elaxia的路线

Description最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间。Elaxia和w**每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提下,一起走的时间尽可能的长。 现在已知的是Elaxia和w**所在的宿舍和实验室的编号以及学校的地图:地图上有N个路 口,M条路,经过每条路都需要一定的时间。 具体地说,就是要求

CreationAugust is 14 years old forever 790

【BZOJ】【P1880】【Sdoi2009】【Elaxia的路线】【dijk】

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1880

退役狗的专栏 737

bzoj1880: [Sdoi2009]Elaxia的路线(最短路 + DP)

原题链接 题目描述:最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们必须合理地安排两个人在一起的时间。Elaxia和w**每天都要奔波于宿舍和实验室之间,他们希望在节约时间的前提下,一起走的时间尽可能的长。现在已知的是Elaxia和w所在的宿舍和实验室的编号以及学校的地图:地图上有N个路口,M条路,经过每条路都需要一定的时间。具体地说,就是要求无向图中...

diqiao4431的博客 192

【BZOJ1880】【Sdoi2009】Elaxia的路线 spfa+拓扑图求最长链

题意: 无向连通图上,S→TS→T有若干条最短路,s→ts→t也有若干条最短路,搞出来两条最短路,要求重合的尽量长(可以方向不同)。 题解: spfa处理出这四个点到每个点的最短路,然后枚举求哪些边既在S→TS→T某条最短路里,又在s−→ts-→t的某条最短路里,然后这是个拓扑图,跑最长链。 哎呀没什么可说的么,水题贴代码就好啦。 代码: #include #include #

辗转山河弋流歌 1871
上一篇: [校内测试]宝藏(树形DP)
下一篇: [BZOJ2461][BeiJing2011]符环(记忆化搜索)
FromATP
博客等级 码龄10年 75粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值