队爷的讲学计划 (强连通缩点+最短路)

队爷的讲学计划(tarjan +拓扑排序) 题目描述 队爷为了造福社会,准备到各地去讲学。他的计划中有n个城市,从u到v可能有一条单向道路,通过这条道路所需费用为q。当队爷在u城市讲学完之后,u城市会派出一名使者与他同行,只要使者和他在一起,他到达某个城市就只需要花1的入城费且只需交一次,在路上的费用就可免去。。但是使者要回到u城市,所以使者只会陪他去能找到回u城市的路的城市。。队爷从1号城市开始讲学,若他在u号城市讲学完毕,使者会带他尽可... 阅读详情

队爷的讲学计划
【问题描述】
队爷为了造福社会,准备到各地去讲学。他的计划中有n个城市,从u到v可能有一条单向道路,通过这条道路所需费用为q。当队爷在u城市讲学完之后,u城市会派出一名使者与他同行,只要使者和他在一起,他到达某个城市就只需要花1的入城费且只需交一次,在路上的费用就可免去。。但是使者要回到u城市,所以使者只会陪他去能找到回u城市的路的城市。。队爷从1号城市开始讲学,若他在u号城市讲学完毕,使者会带他尽可能多的去别的城市。他希望你帮他找出一种方案,使他能讲学到的城市尽可能多,且费用尽可能小。
【输入文件】
第一行2个整数n,m。
接下来m行每行3个整数u,v,q,表示从u到v有一条长度为q
的单向道路。
【输出文件】
一行,两个整数,为最大讲学城市数和最小费用。
【输入样例】
6 6
1 2 3
2 3 7
2 6 4
3 4 5
4 5 4
5 2 3
【输出样例】
6 10
【样例解释】
如上图,从1走到2,2城市使者会带他到3,4,5城市,
回到2城市,再走到6,总费用为3+3+4=10。
【数据规模与约定】
对于20%的数据,1<=n<=20;
对于另外10%的数据,城市网络为一条单向链;
对于60%的数据,1<=m<=200000
对于100%的数据,1<=n<=100000
1<=m<=500000,1<=q<=1000, 保证无自环无重边。

强连通缩点+最短路,注意最短路的时候需要加上该强连通分量内的点数-1。 关于最短路,因为数据比较水,spfa就可以了。

代码如下

program mys;

type ab=^node;
node=record
data,ends:longint;
next:ab;
end;

var x,y,z,i,j,k,m,n,t,ans,an:longint;
f,dis,g,hh:array[0..500000]of longint;
p,pa:array[0..500000]of ab;
team:array[0..5000000]of longint;
b,zhan:array[0..500000]of boolean;
ii:ab;

function find(x:longint):longint;
begin 
if f[x]<>x then f[x]:=find(f[x]);
exit(f[x]);
end;

procedure com(x,y,z:longint);
var i:ab;
begin 
i:=p[x];
new(p[x]);
p[x]^.ends:=y;
p[x]^.data:=z;
p[x]^.next:=i;
end;

procedure combine(x,y,z:longint);
var i:ab;
begin 
i:=pa[x];
new(pa[x]);
pa[x]^.ends:=y;
pa[x]^.data:=z;
pa[x]^.next:=i;
end;

procedure dfs(x:longint);
var 
y:longint;
i:ab;
begin 
inc(t);
team[x]:=t;
b[x]:=true;
zhan[x]:=true;
i:=p[x];
while i<>nil do 
begin 
y:=i^.ends;
if  not b[y] then dfs(y);
y:=find(y);
if (zhan[y])and(team[x]>team[y]) then 
begin 
team[x]:=team[y];
f[x]:=y;
end;
i:=i^.next;
end;
zhan[x]:=false;
end;

procedure spfa;
var t,x,h,u,y:longint;
i:ab;
begin 
fillchar(b,sizeof(b),false);
fillchar(dis,sizeof(dis),$7f);
fillchar(team,sizeof(team),0);
t:=1; h:=0; team[1]:=1; b[1]:=true; hh[1]:=g[1]; dis[1]:=g[1]-1;
while h<t do 
begin 
inc(h);
u:=team[h];
i:=pa[u];
b[u]:=false;
while i<>nil do 
begin
y:=i^.ends;
if (hh[y]<hh[u]+g[y])or((hh[y]=hh[u]+g[y])and(dis[y]>dis[u]+i^.data+g[y]-1)) then 
begin 
hh[y]:=hh[u]+g[y];
dis[y]:=dis[u]+i^.data+g[y]-1;
if b[y]=false then 
begin 
inc(t);
team[t]:=y;
b[y]:=true;
end;
end;

i:=i^.next;
end;
end;
end;


begin 
assign(input,'teach.in');reset(input);
assign(output,'teach.out'); rewrite(output);
readln(n,m);
for i:=1 to m do 
begin 
readln(x,y,z);
com(x,y,z);
end;
for i:=1 to n do 
f[i]:=i;
dfs(1);
for i:=1 to n do 
inc(g[find(i)]);
for i:=1 to n do 
begin 
ii:=p[i];
x:=find(i);
while ii<>nil do 
begin 
if find(ii^.ends)<>x then  combine(x,find(ii^.ends),ii^.data);
ii:=ii^.next;
end;
end;
spfa;
ans:=maxlongint;
an:=0;
for i:=1 to n do 
if (an<hh[i])or((an=hh[i])and(ans>dis[i])) then 
begin 
an:=hh[i];
ans:=dis[i];
end;
writeln(an,' ',ans);
close(input);
close(output);
end.
【日常学习】【强连通分量tarjan缩点】codevs1611 抢掠计划题解 题目描述 Description Siruseri 城中的道路都是单向的。不同的道路由路口连接。按照法律的规定, 在每个路口都设立了一个Siruseri 银行的ATM 取款机。令人奇怪的是,Siruseri 的酒吧也都设在路口,虽然并不是每个路口都设有酒吧。 Banditji 计划实施Siruseri 有史以来最惊天动地的ATM 抢劫。他将从市中心 出发,沿着单向道路行驶,抢劫所有他 阅读详情

相关推荐

VLOOKUP_fixed.py

VLOOKUP_fixed.py

【BZOJ】1179 [Apio2009]Atm 强连通分量+最短路

题目传送门 这题的正解——强连通分量+最短路,还是需要一定的想象力的。 首先,我们把所有能够互相到达的点(也就是强连通分量)进行缩点,缩完后的点的权值就是原先所有点的权值和。 然后,我们对缩完点的图重新建图,和强连通分量相连的点就是和属于这个强连通分量的原先节点相连的点。 最后,我们对新建的图做一遍最短路,然后每次读入一个节点,判断该节点所在的强连通分量到起点s的最短路是否大于当前的ans

Chester King 658

D打卡签到,蓝牙中继,广播信号模拟器

模拟WIFI或蓝牙,有如下4种运行模式 1、WIFI模式:指定SSID、BSSID名称等,模拟WIFI,供设备连接。 2、蓝牙静态模式:指定MAC地址,广播固定的RAW数据。 3、蓝牙动态主机模式:扫描周围蓝牙设备,获取指定MAC地址的蓝牙及其RAW数据,实时发送至Cloud云端,可以设定时间段,只在设定的时间段内发送。 4、蓝牙动态从机模式:指定MAC地址,从Cloud云端获取动态主机模式实时上传的该MAC地址的RAW数据,并广播RAW数据。 准备工作: 1、板子:选择ESP32C3或ESP32C3 Supermini 2、nRF Connect手机app:用于扫描获取待模拟蓝牙设备的MAC和RAW数据。 Wifi分析仪或WiFi魔盒手机APP:用于扫描获取待模拟WIFI设备的SSID和BSSID。 3、可使用官方flash_download_tool_3.9.11工具来固件烧录。 使用说明: 上述完成后,设备首次上电,RESET一侧的指示灯会常亮,可以把它理解成电源指示灯; BOOT一侧的灯会亮,该灯常亮,表示设备开启了AP模式,此时设备会发射一个WIFI信号源,名称为ESPWIFI_AP,密码为12345678,手机或电脑连接该WIFI,浏览器输入192.168.4.1,进入设备的配置页面,进行相应的配置,其中动态主机模式和动态从机模式的SSID、Pwd 及要模拟的蓝牙MAC地址。配置完成并保存后,会重启,重启后设备会按照保存的配置运行。若下次要修改设备配置,可以长按BOOT按键,等待BOOT一侧的灯常亮,即进入AP模式,再按照上述流程配置即可。 仅用于蓝牙设备的开发与调试,请勿用于签到等违法违纪用途。

NOIP模拟赛 队爷的讲学计划

队爷的讲学计划 问题描述 队爷为了造福社会,准备到各地去讲学。他的计划中有n 个城市,从 u 到 v 可能有一条单向道路,通过这条道路所需费用为 q。当队爷在 u 城市讲学完之后,u 城市会派出一名使者与他同行,只要使者和他在一起,他到达某个城市就只需要花 1 的入城费且只需交一次,在路上的费用就可免去。。但是使者要回到 u 城市,所以使者只会陪他去能找到回 u 城市的路的城市。。队爷从 1 ...

weixin_30477293的博客 160

YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

队爷的 Au Plan(dp+单调队列)

队爷的 Au Plan 【问题描述】 队爷为了变得越来越神,他给自己制定了 n 个任务,编号为 1, 2,…,n。队爷在完成这些任务之前有一个初始兴奋值 m,每个任务 都有一个难度值 hard[i],且对于任何 i>j,有 hard[i]>hard[j],队爷 完成第 i 个任务,兴奋值至少会减少 hard[i],第 i 任务完成之后,队 ...

weixin_30510153的博客 235

Java低代码, 轻量级, 支持国产化 国密 AI大模型MCP服务 商业免费 包括核心模块如:组织机构、角色用户、权限授权、数据权限、内容管理、工作流、Spring Cloud 微服务、AI大模型等

Java低代码, 轻量级, 支持国产化 国密 AI大模型MCP服务 商业免费 Spring Boot, MyBatis, Flowable, TypeScript, Vue, Antdv, 包括核心模块如:组织机构、角色用户、权限授权、数据权限、内容管理、工作流、Spring Cloud 微服务、AI大模型、代码生成器等

队爷的新书

题目链接:队爷的新书 显然线段分成了很多个区间,进而对每个区间取右端点最优。进而想到离散化。 AC代码: #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<bits/stdc++.h> //#define int long long using namespace std; const int N=2e5+10...

青烟绕指柔的博客 399

文创媒体电商行业智算中心(AIDC)建设规划方案.pptx

文创媒体电商行业智算中心(AIDC)建设规划方案.pptx

集团企业数字化转型AI智能体平台规划及场景应用方案.pptx

集团企业数字化转型AI智能体平台规划及场景应用方案.pptx

POJ--Countries in War--强连通缩点+最短路

Countries in War Time Limit:1000MS Memory Limit:65536K Total Submissions:5406 Accepted:1554 Description In the year 2050, after different attempts of the UN to maintain peace...

lanshan1111的博客 194

基于动态窗口法DWA的机器人路径规划研究(Matlab代码实现)

内容概要:本文系统研究了基于动态窗口法(DWA)的机器人局部路径规划算法,深入剖析其在动态环境中实现自主避障与实时轨迹优化的核心机制。文章详细阐述了DWA算法的速度空间采样策略、轨迹预测模型、动力学约束处理及多目标代价函数的设计原理,并通过构建完整的Matlab仿真框架验证算法有效性。结合典型场景的仿真实验,展示了机器人在复杂障碍物环境下如何实时生成安全、平滑且符合运动学约束的最优路径,充分体现了DWA在移动机器人导航中的实用性与鲁棒性。; 适合人群:具备机器人运动规划基础知识和Matlab编程能力,从事智能移动机器人、自动驾驶或服务机器人研发的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解DWA算法的理论基础与实现细节;②掌握机器人局部路径规划的仿真实现方法;③为实际机器人系统的导航模块开发提供可复用的算法原型与代码参考;④作为进一步研究高级导航算法(如TEB、MPC)的技术基础。; 阅读建议:建议结合提供的Matlab代码逐模块分析与调试,重点关注速度采样、轨迹积分、障碍物距离计算及代价评估等关键环节,通过调整参数在不同地图环境中进行对比实验,以深刻把握算法性能与参数之间的关系,进而提升对实时路径规划系统设计的理解与应用能力。

POJ3114(缩点+最短路)

Countries in War Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2028   Accepted: 635 Description In the year 2050, after different attempts of the UN to

crazy_石头的专栏 1105

【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)

内容概要:本文系统研究了用于轴承故障诊断的集中时频分析技术,重点解决了传统时频分析方法在处理非平稳信号时存在的能量分散与分辨率不足等问题。通过引入集中时频分析方法,能够有效聚焦信号能量,精确提取轴承故障特征频率,提升故障识别的准确性与时效性。文章详细阐述了该方法的理论基础,并结合仿真信号与实际实验数据验证其优越性能,同时提供了完整的Matlab代码实现流程,涵盖信号预处理、时频变换、参数优化及结果可视化等环节,便于读者复现与拓展应用。; 适合人群:具备一定信号处理理论基础和Matlab编程能力的研究生、科研人员,以及从事机械设备状态监测、故障诊断与预测性维护工作的工程技术人员。; 使用场景及目标:①应用于电机、风机、齿轮箱等旋转机械的早期轴承故障检测,实现故障预警;②提升工业设备运维系统的智能化水平,支撑预测性维护体系构建;③作为高校或研究机构在信号处理、机械故障诊断等课程中的教学案例与实践素材。; 阅读建议:建议读者结合文中提供的Matlab代码逐段运行与调试,深入理解集中时频分布的生成机制及其关键参数(如核函数选择、平滑窗口大小)对诊断效果的影响,并尝试将其应用于其他类型的机械故障信号分析中,开展对比研究以深化对该方法适用性的认识。

虚拟机VirtualBox下载与安装、安装Ubuntu超详细图文步骤,对一些配置问题也有所写。

自己使用过两款虚拟机,相较于VMware虚拟机来说,virtuabox虚拟机所占内存更小,只有几十兆,且完全开源不收费,里面的功能与VMware基本差不多(在日常开发、学习使用完全够用)。最主要的是,在博主自己使用VMware时经常出错,而virtualbox就更稳定一些,所以这篇是针对virtualbox的安装与一些细节部分。

l1015649309的博客 4万+

城中与城郊

这篇文章是我开通博客写的第一篇文章,是关于对生活、对社会的一些随谈。           时间过得很快,到南京也差不多一个月了!此行是无奈之举,但也无法抗拒!           俗话说:人在屋檐下,不得不低头!             有没LZ曾经受过研究生阶段Boss的压迫?Boss最大程度地压榨剩余价值,导致被外派!           从事一些不适合自己的软件开发工作,被Boss

神明传奇专栏 1200

QComboBox设置最大显示数量多余的用滑动条,以及QComboBox::setMaxVisibleItems()不起作用的问题

QComoboBox是Qt封装的一个选择框的东西,但是我在使用过程中有一点感觉很不好,如图: 不论你往里面添加多少个它都会给你显示全部,甚至给你铺满全屏,后来看了官方文档发现有个setMaxVisibleItems()的方法,我欣喜若狂啊,终于特么的能解决了,但是,很遗憾,不知为啥,我设置上之后并没有起作用,依然会显示全部,后来搜了百度发现有个人是这样解决的 QComboBox *box = ne...

Aboveground的博客 4919

NOIP模拟赛 队爷的 Au Plan

队爷的 Au Plan 问题描述 队爷为了变得越来越神,他给自己制定了 n 个任务,编号为 1,2,…,n。队爷在完成这些任务之前有一个初始兴奋值 m,每个任务都有一个难度值 hard[i],且对于任何 i>j,有 hard[i]>hard[j],队爷完成第 i 个任务,兴奋值至少会减少 hard[i],第 i 任务完成之后,队爷会受到鼓舞,兴奋值又会增加 s[i],每个任务只完成...

weixin_30925411的博客 237

Windows 11 的C盘User(用户)文件夹下的用户文件夹名称的修改

背景介绍:由于系统重装导致Windows 11的系统用户名与C盘User(用户)文件夹下的用户名文件夹(公用文件夹旁边的文件夹)出现名称不一致,事例中系统用户名命名为“寂萧”,User(用户)文件夹下的文件夹名称却是“77555”。【QQ邮箱前五位真的真的看着很别扭】注:改名有风险,三思而后行。User(用户)文件夹下的用户名是中文在某些软件的应用场景下产生不便,导致很多软件莫名其妙报错,甚至无法使用,笔者不建议修改为中文名。//和笔者一样的强迫症除外//

2302_79084172的博客 10万+

Linux下自动化解析q7签名文件的有效期与时间戳

本文详细介绍了在Linux环境下自动化解析q7签名文件有效期与时间戳的方法。通过编写高效脚本,开发者可以批量提取签名时间信息,验证签名有效性,并集成到CI/CD流程中。文章提供了完整的脚本实现,包括错误处理、批量处理功能,并解决了常见环境问题,特别适用于国产操作系统如UOS的开发场景。

weixin_30872499的博客 518
上一篇: 旅游景点 (并查集)
下一篇: 洛谷 2880 平衡的阵容 (RMQ)
CodeOnce
博客等级 码龄10年 3粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值