当前位置: 首页 > news >正文

【AcWing题解/洛谷题解/USACO题解】P1948 Telephone Lines S 通信线路

题目链接

AcWing:https://www.acwing.com/problem/content/description/342/
洛谷:https://www.luogu.com.cn/problem/P1948

前置知识

1.1.1.二分法和二分答案
2.2.2.单源最短路、双端队列宽度优先搜索

思路分析

本题解的设问主要依据AcWing的翻译所作.

第一部分:从设问开始——二分法的框架

设问中强调,需要支付的费用是最昂贵的那一条,同时,又强调要使最小,即求最大值的最小值,所以采用二分法

二分法中,我们需要得到一个满足题目要求的性质。设二分得到的中间值为xxx,题目要求指定路径上不超过kkk条电缆,则我们就需要判断费用大于xxx的电缆总数是否小于等于kkk。如果费用大于xxx的电缆总数超过kkk,则说明我就算全部都免费升级费用大于xxx的电缆,也会在该部分存在电缆不免费升级,那么当前中间值xxx就不是剩下电缆中最昂贵的,不符合题意。

对于二分法中的左右边界,虽然电缆费用的范围为11110610^6106,但是如果当前数据无解,我们会二分到右边界,如果有解,仍然有可能会到右边界,为了区分这样的情况,我们把二分的左右边界设为000106+110^6+1106+1

x≤kx≤kxk,则满足性质,将midmidmid继续往前半部分推移;否则不满足性质,往后半部分推移。

第二部分:性质的判定——最短路的结合

如何判定其是否满足性质呢?

我们可以设费用大于xxx的电缆权值为1,设费用小于等于xxx的电缆权值为0,再做最短路算法,这样就可以算出最少需要有多少电缆费用大于xxx了。如果到达点NNN时的距离dis[N]dis[N]dis[N]小于等于kkk,则说明电缆数不超过kkk条。

对于边权值只有000111的最短路,我们可以使用双端队列BFS。

AC代码

细节上的注意点已经写入注释。

#include<iostream>#include<cstdio>#include<cstring>#include<deque>usingnamespacestd;//注意点1:边要开两倍空间,因为是双向边constintN=1100,M=2e4+10,INF=0x3f3f3f3f;intn,m,k;inte[M],ne[M],h[N],w[M],idx;intst[N],dis[N];deque<int>q;voidadd(inta,intb,intc){w[idx]=c;e[idx]=b;ne[idx]=h[a];h[a]=idx++;return;}boolcheck(intx){//注意点2:st数组一定要记得初始化memset(st,0,sizeofst);memset(dis,INF,sizeofdis);dis[1]=0;q.push_back(1);while(!q.empty()){intnow=q.front();q.pop_front();if(st[now])continue;st[now]=true;for(inti=h[now];i!=-1;i=ne[i]){intj=e[i],v=w[i]>x;if(dis[j]>dis[now]+v){dis[j]=dis[now]+v;if(!v)q.push_front(j);elseq.push_back(j);}}}returndis[n]<=k;}intmain(){//注意点3:头数组也一定要初始化memset(h,-1,sizeofh);scanf("%d%d%d",&n,&m,&k);for(inti=1;i<=m;i++){inta,b,c;scanf("%d%d%d",&a,&b,&c);add(a,b,c);add(b,a,c);}intl=0,r=1e6+1;while(l<r){intmid=l+r>>1;if(check(mid))r=mid;elsel=mid+1;}if(r==1e6+1)printf("-1");elseprintf("%d",r);return0;}
http://www.jsqmd.com/news/1272249/

相关文章:

  • MBA论文写作必备:9款AI工具提升科研效率
  • 易语言软件怎么免费增加网络验证?怎么增加卡密系统?
  • 《热江绿色版》热江手游:最新下载入口,官方正版下载渠道三端互通IOS、安卓、电脑最新下载地址,纯粹靠手打、靠积累、无数值氪金、长期养老不翻车的复古武侠
  • Golang调用Windows API实现ARP扫描与网络探测
  • 跳出制衣局限:模板机跨界窗帘家居布艺生产科普,实现服装家纺柔性共线
  • ERTC协议与WebRTC优化在智能家居音视频通信中的应用
  • 零侵入式系统性能分析:多维度流量监控实践
  • 优质高速喷射点胶阀口碑盘点 靠谱供应商深度解析,技术好的高速喷射点胶阀供应商选哪家,快速喷射稳定,保障点胶的质量 - 品牌推荐师
  • DM6467T嵌入式系统设计:互连架构、电源时钟与PCB实战解析
  • C语言-函数(数组传值)
  • 文本到图像模型的空间智能评估与优化实践
  • 二分算法原理、实现与工程实践全解析
  • 大模型内容生成对平台流量与创作者生态的影响分析
  • AI智能体开发实战:从架构设计到部署优化
  • Python数据分析(三):NumPy数组操作与矩阵计算
  • 专科生必备:AI降重工具实战指南与避坑技巧
  • 正则表达式实战:从基础到高效应用的完整指南
  • Agent 架构七大反模式:七月生产环境踩坑总结
  • iPhone数据恢复实战:原理、工具与关键技巧
  • C++网络编程核心:ntohl函数原理、应用与字节序陷阱全解析
  • WGAN-GP在光伏发电突变预测中的应用与实践
  • C#基础入门与面向对象编程学习总结
  • 智能论文写作助手:突破学术写作障碍的技术方案
  • FIPO算法突破大模型长序列推理限制
  • 2kol七月限时彩蛋开源领取
  • 从零构建AI Native Agent:Hello-Agents框架实战指南
  • 2026专科生论文写作AI工具TOP10推荐与测评
  • ROS2函数编程实战:从回调机制到性能优化
  • SpringBoot+Vue3电影院购票系统架构与实现
  • YOLO与暗通道去雾算法结合提升恶劣天气目标检测