POJ3662 Telephone Lines 二分+最短路

POJ3662 Telephone Lines (最短路+二分) 最近开始练图论了,跟蓝书刷起来。 题意: 在无向图上求出一条从1到N的路径,使得路径上第K+1大的边权尽量小。 数据范围:N,K1e3,P(边)1e4 思路: 由于答案具有单调性,即付钱少的方案一定被包含在付钱多的方案内,则二分答案,把问题转化为你:是否存在一种合法的升级方法,使花费不超过mid。 判定只需在做最短路的时候把边权大于mid的边边权变为1,不超过mid的边权为0,看1到n最短路是否超... 阅读详情

 

Telephone Lines
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 3468 Accepted: 1245

Description

Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone company is uncooperative, so he needs to pay for some of the cables required to connect his farm to the phone system.

There are N (1 ≤ N ≤ 1,000) forlorn telephone poles conveniently numbered 1..N that are scattered around Farmer John's property; no cables connect any them. A total ofP (1 ≤ P ≤ 10,000) pairs of poles can be connected by a cable; the rest are too far apart.

The i-th cable can connect the two distinct poles Ai andBi, with length Li (1 ≤ Li ≤ 1,000,000) units if used. The input data set never names any {Ai,Bi} pair more than once. Pole 1 is already connected to the phone system, and pole N is at the farm. Poles 1 andN need to be connected by a path of cables; the rest of the poles might be used or might not be used.

As it turns out, the phone company is willing to provide Farmer John with K (0 ≤ K < N) lengths of cable for free. Beyond that he will have to pay a price equal to the length of the longest remaining cable he requires (each pair of poles is connected with a separate cable), or 0 if he does not need any additional cables.

Determine the minimum amount that Farmer John must pay.

Input

* Line 1: Three space-separated integers: N, P, and K
* Lines 2..P+1: Line i+1 contains the three space-separated integers:Ai, Bi, and Li

Output

* Line 1: A single integer, the minimum amount Farmer John can pay. If it is impossible to connect the farm to the phone company, print -1.

Sample Input

5 7 1
1 2 5
3 1 4
2 4 8
3 2 3
5 2 9
3 4 7
4 5 6

Sample Output

4

Source

 
 
二分+最短路
题意:求一条路径从1到n使第k+1大的边最小。
二分答案mid,当原边权小于等于mid新边权为0,否则新边权为1.
求最短路,若小于等于k说明满足条件。
代码:
#include<cstdio>
#include<cstring>
#define N 1005

int n,m,k,num,adj[N],low[N],f[N],q[N];
struct edge
{
	int v,w,c,pre;
}e[N*20];
void insert(int u,int v,int w)
{
	e[num].v=v;
	e[num].c=w;
	e[num].pre=adj[u];
	adj[u]=num++;
}
int spfa(int x)
{
	int i,v,head=0,tail=0;
	memset(f,0,sizeof(f));
	memset(low,0x7f,sizeof(low));
	low[x]=0;
	q[++tail]=x;
	while(head!=tail)
	{
		x=q[head=(head+1)%N];
		f[x]=0;
		for(i=adj[x];~i;i=e[i].pre)
			if(low[v=e[i].v]>low[x]+e[i].w)
			{
				low[v]=low[x]+e[i].w;
				if(!f[v])
				{
					f[v]=1;
					q[tail=(tail+1)%N]=v;
				}
			}
	}
	return low[n]<=k;
}
int ok(int x)
{
	int i,j;
	for(i=1;i<=n;i++)
		for(j=adj[i];~j;j=e[j].pre)
			if(e[j].c<=x)
				e[j].w=0;
			else
				e[j].w=1;
	return spfa(1);
}
int main()
{
	int u,v,w;
	while(~scanf("%d%d%d",&n,&m,&k))
	{
		num=0;
		memset(adj,-1,sizeof(adj));
		int l=0,r=0,mid,ans=-1;
		while(m--)
		{
			scanf("%d%d%d",&u,&v,&w);
			insert(u,v,w);
			insert(v,u,w);
			if(w>r)
				r=w;
		}
		while(l<=r)
		{
			mid=(l+r)/2;
			if(ok(mid))
			{
				ans=mid;
				r=mid-1;
			}
			else
				l=mid+1;
		}
		printf("%d\n",ans);
	}
}

WslRegisterDistribution failed with error_ 0x8007019e、0x800701bc、0x80370102 Ubuntu 20.04.4 LTS 报错解决方案。分别涉及到三个错误:WslRegisterDistribution failed with error: 0x8007019e、WslRegisterDistribution failed with error: 0x800701bc和WslRegisterDistribution failed with error: 0x80370102 阅读详情

相关推荐

计算机视觉-深度学习图像检测方法梳理

计算机视觉-深度学习图像检测方法梳理 由于之后要转方向啦,趁这段时间整理手中硕士研究方向的一些阅读笔记,这是一篇关于计算机视觉的基础知识梳理 先搞清一些小知识点 首先我们要弄清楚图像分类、目标定位、语义分割、实例分割的区别 a. 图像分类 :给定一张输入图像,图像分类任务旨在判断该图像所属类别; b. 目标定位 :在图像分类的基础上,我们还想知道图像中的目标具体在图像的什么位置,通常是以包围盒的(bounding box)形式; c. 语义分割 :语义分割是目标检测更进阶的任务,目标检测只需要框出每个目

qq_41662991的博客 9953

【POJ3662】Telephone Lines

题意 一共有N个电线杆,有P对电线杆是可以连接的,用几条线连接在一起的电线杆之间都可相互通信,现在想要使得电线杆1和电线杆N能相互通信,并且电线公司提出K条电线是可以免费使用的,当使用电线的数量超过K条,超出的电线要收费,收的总费用为去掉免费使用的K条电线之后最长的那条电线的长度。现在需要尽可能的减少费用,问最少费用是多少一句话题意:在无向图上找出一条从1到N的路径,使得路径上第K+1...

Ashley_2013的博客 278

Transformer入门(一)——结构

Transformer入门介绍篇,分别介绍了Transformer的总体结构与每个模块的实现原理

yeen123的博客 9424

POJ3662 最短路+动态规划(分层图最短路)

POJ3662 Telephone Lines 该题要在一张给定的图上,从 1 到 N 找到一条路径,该路径上所有的边权里面,可以选择不超过K个边权,免除这些边权的花费,只需要花费剩下的边权里面的最大边权的值,即可以完成 1 到 N 的连接。 我们可以定义一个数组 dp[ i ][ j ],表示从 1 到 i ,已经选择了 j 条边被免除时,1 到 i 剩下的边里面最大的边权。从中我们可以看出,这道题具有动态规划特征。对于每一条边,都具有被选择和不被选择两种情况。所以,状态转移方程为: dp[ i ][

Itandsoon的博客 447

手势控制 Python !Leap Motion Python 开发教程 (二)

手势控制 Python !Leap Motion Python 开发教程 (二) 现在进入正题,我来给大家总结一下我在使用 Leap Motion 开发过程中的经验以及学到的东西,其中我会概括以及翻译官方给出的注释,为了让这些注释更加通俗易懂,让大家更好理解。 回顾 在上一篇文章中我们讲了如何配置 Leap Motion 的 Python 2.7 的开发环境,如果您还没有配置好您的开发环境,可以参...

成畅的博客 3191

基于Yolo11的无人机小目标检测系统的设计与性能优化改进项目实现

该项目旨在开发一个基于YOLO11的无人机目标检测系统,能够实时识别并定位无人机拍摄过程中捕捉的小目标。考虑到无人机拍摄的目标通常较小,系统将采用特定的调优策略,以提高小目标的检测精度和召回率。

m0_73723097的博客 1205

Telephone Lines

封校好痛苦,好想van游戏(T_T)

海的那边是什么不重要了,结局可能不如你意,但希望尽你所能. 235

手把手教你用Ubuntu Base 20.04打造轻量级ARM开发板根文件系统(附常见问题解决)

本文详细介绍了如何基于Ubuntu Base 20.04 LTS构建轻量级ARM开发板根文件系统,涵盖环境准备、镜像制作、跨架构配置、软件包定制及常见问题解决。通过实战指南,开发者可快速掌握ARM架构下的根文件系统构建技巧,优化系统性能并解决部署中的典型问题。

gin88的博客 209

[USACO08JAN]电话线Telephone Lines

题目 传送门 题解 我们考虑简化问题,对于长度小于二分出的答案的线段,因为不需要付价钱,所以可以将其权值看作是0;同理,大于二分的值的路径,我们将长度看作1(意味着我需要使用1次免费的资格)。so,我们跑一遍spfa,看到了n点的最短路的长度,如果大于k,则不行,缩小r范围继续二分;如果小于,则有可能更小,缩小l范围继续二分 code spfa + 二分 #include &amp;amp;lt;algorith...

MILLOPE的博客 289

AD9361 官方例程详解(一)

文章目录前言一、pandas是什么?二、使用步骤总结 前言 一、pandas是什么? 二、使用步骤 总结

weixin_44630490的博客 4万+

【ComfyUI专栏】ComfyUI 常用工作流下载与分享网址

首先我们来分享第一个网站,Openart 网站,这个网站同时也能提供比较多的其他类型。但是如果希望下载工作流,我们可以访问到如下的这个站点。作为ComfyUI的学习用户来说,我们通常需要借助他山之石来帮助我们快速成长,因此我们需要找到能够分享和下载的网址。,当前网站是综合性网站,在网站中可以下载各种不同的类型,其中工作流只是可以下载的非常小的部分。这个网站也可以浏览不同的工作流,这个工作流的地址和访问如下的站点。

技术与管理的平衡木- 7778

POJ 3662 二分 + Dijkstra / 双端队列 BFS

题意 传送门 POJ 3662 题意为线缆公司免费提供 KKK 条边,问题转化为最小化路径上第 K+1K+1K+1 长的边权值。二分答案,将图中权值大于当前二分值的边的权值赋为 1,反之为 0;dijkstra 求最短路,此时的最短路代表从顶点 1 到顶点 N 大于二分值的边的最少使用数,满足使用数小于等于 KKK 的最短边权值即答案。 #include <cstdio> #inclu...

neweryyy的博客 307

这个AI工具可以把产品说明书转成演示视频,老板狂喜

回顾本文,我们从“传统视频制作的痛点”出发,拆解了AI将产品说明书转为视频的核心技术(NLP文本理解→CV画面生成→视频合成),并提供了3类工具实操方案(SaaS/开源/API)。推广成本降80%,制作效率提90%,产品迭代与推广终于能“同频”;摆脱对专业团队的依赖,自己就能快速产出高质量视频;对技术爱好者来说,这是一个“AI多模态融合”的绝佳实践案例(NLP+CV+语音合成的综合应用)。今天就找一份产品说明书,用HeyGen或Pictory试做一个视频。

AIGC应用创新大全的博客 322

POJ3662 Telephone Lines [二分 最短路]

题意: 题目描述得挺隐晦。但是本质就一句话:求一条"最短路":第k+1大的边最小的"最短路"。 思路: 二分加最短路判定。 最答案进行二分。然后按照二分的值用0,1处理整个图: 将比二分值大的边都置为1,将比二分值小的边都置位0。然后进行找1到n的最短路,如果值小于K,则这个二分值满足题意。 再继续二分,直到找到最优解。 #include #include #include

Aszxqw 1486

Statistics and Machine Learning Toolbox

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

POJ - 3662 Telephone Lines 二分 + 最短路

传送门:POJ3662 题意:有n个点,其中m对可以连边,但是有不同的花费,现在要求将1和n连通,你可以先选k对点使其免费连上,剩下的需要你自己花钱,定义费用为需要你花钱的边中花钱最多的那条边,问最小费用是多少。 思路:显然尽量让长的边都免费是最优的,因此我们可以二分花费第k+1大的边(也就是答案),然后用最短路进行检查,看看能不能只用k条比mid费用大的边就能让1和n连通,由于比mid小的边

WA是一笔财富 470

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

poj 3662 Telephone Lines(二分 + 最短路 | 分层图最短路)

题意 在郊区有 N 座通信基站,P 条双向电缆,第 i 条电缆连接基站AiAi和BiBi。 特别地,1 号基站是通信公司的总站,N 号基站位于一座农场中。 现在,农场主希望对通信线路进行升级,其中升级第 i 条电缆需要花费LiLi。 电话公司正在举行优惠活动。 农产主可以指定一条从 1 号基站到 N 号基站的路径,并指定路径上不超过 K 条电缆,由电话公司免费提供升级服务。 农场主只需...

一身清贫怎敢入繁华 683

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

poj 3662 Telephone Lines(二分+01最短路)

在无向图上,求1到N的路径,使得路径上第K+1大的边权尽量小

越看越喜欢啊 717

POJ - 3662 Telephone Lines (二分 + 最短路)

Telephone Lines Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6262   Accepted: 2311 Description Farmer John wants to set up a telephone line at his farm. U

qq_18661257的专栏 837

POJ 3662 Telephone Lines【Dijkstra最短路+二分求解】

Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7214 Accepted: 2638 Description Farmer John wants to set up a telephone line at his farm....

weixin_33873846的博客 118

POJ3662 Telephone Lines(二分+最短路)

题意:求一条路径从1到n使第k+1大的边最小。 分析:双端队列BFS,详见《算法竞赛进阶指南》P356、P120。 代码: #include <deque> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using nam...

常胜将军的博客 200

poj-3662 Telephone Lines 二分答案+最短路

链接:洛谷 POJ 题目描述 Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone company is uncooperative, so he needs to pay for some of the cables required to c...

weixin_30299539的博客 233

Telephone Lines POJ - 3662 (二分加最短路)

Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone company is uncooperative, so he needs to pay for some of the cables required to connect his farm to the phone system....

Top_xiao的博客 194

POJ 3662 Telephone Lines【二分答案+最短路】||【双端队列BFS】

<题目链接> 题目大意: 在一个节点标号为1~n的无向图中,求出一条1~n的路径,使得路径上的第K+1条边的边权最小。 解题分析:直接考虑情况比较多,所以我们采用二分答案,先二分枚举第K+1条路的边权,然后根据枚举的边权,重新建图。因为john只需要支付除K条边之后权值最大的边,所以对于所有边权小于等于枚举边的,将其边权置为0,对于那些大于枚举边权的边,边权则置为1,这样,对1~...

weixin_30294021的博客 170

POJ 3662 Telephone Lines(二分+最短路)

  查看题目   最小化第K大值。       让我怀疑人生的一题目,我有这么笨? 1 #include <cstdio> 2 #include <queue> 3 #include <cstring> 4 #include <vector> 5 #include <functional> 6...

diancha6978的博客 164

poj3662 Telephone Lines【最短路】【二分】

http://poj.org/problem?id=3662 Telephone Lines Time Limit:1000MS Memory Limit:65536K Total Submissions:9310 Accepted:3374 Description Farmer John wants to set up ...

weixin_30376083的博客 95

POJ - 3662 Telephone Lines 最短路二分+双端队列优化

题目描述 给定一个图, 可以选着一个1 -> n的路线, 然后可以把这条路上的k个边免费, 然后支付免费后最贵的一条边, 求支付的这条边最小是多少 样例 Sample Input 5 7 1 1 2 5 3 1 4 2 4 8 3 2 3 5 2 9 3 4 7 4 5 6 Sample Output 4 思路 二分答案, l = 0, r = 1e6+1 因为结果可能是0的, 所以左...

正月看雪花的博客 237
上一篇: POJ 2286 HDU 1667 ZOJ 2396 The Rotation Game IDA*迭代加深搜索
下一篇: HDU 4109 Instrction Arrangement 差分约束系统
power721
博客等级 码龄18年 176粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值