HDU 1839 Delay Constrained Maximum Capacity Path

如何解决后端 timing check时endpoints which are not constrained for maximum delay.问题 这种问题一般是由于代码中部分信号tie0,导致部分寄存器综合后为常数。工具会前面自动插入icg,导致时钟无法到达寄存器。后端可通过脚本去除此warning。 阅读详情

传送门

二分枚举最短路。

我是服了这几个词了,你是真的牛批:

  • unidirectional 单向
  • bidirectional 双向
  • undirected 无向
  • directed 有向

和HDU 2363很像,注意体会。
给你一个无向图,让你找一个从1到N的最小找最大(每条路上最小的边权(cap),所有路上取其最大值),然后还必须这条路的另外一个边权(time)之和小于等于一个常数T。

就像上面那道题的二分那样,这道题是对这个全局最优的容量边权进行二分,我们知道这条路上的其他边的容量肯定都大于等于这个值。所以,就可以根据这个【边限制】来限制当前的图,然后再判断当前图的可行性从而决定下一次二分取左半边还是右半边。

这里比较抽象,所谓判断当前图的可行性,就是看起点和终点在当前限制下连不连通。然而,这道题要求的第二层条件不是仅仅可行就行(这个一定是隐含条件),而是边权time之和小于等于T,所以就必须要用最短路算法了,因为判断这个条件可以转化为判断最短路是否小于等于T(当然你可以再多走几条边,但是我只要保证下限(最短路的值)刚好满足了上限T就行)。所以这个最短路算法要完成两个功能,执行上面二分的边限制(以cap为边权)以及求解当前图的最短路(以time为边权)。

然后再说说这个二分的具体细节。像我这两道题写的这个二分,应用条件是找从左向右第一个满足条件的值(是具体的值,不是下标,所以重复无所谓),所谓满足条件至少是指当前限制下起点终点连通。所以,这个二分区间的排序要符合【越往左越优】。另外,按照这个二分写法,如果取了右半边后二分刚好结束(l=r)那么最短路的值可能还是INF,所以要再来一次最短路算法,但这道题不用这样,因为这道题不用输出最短路的值。

另外,想一想为什么能保证最后全局最优的那个边一定被最短路走?道理很简单。(其实,在二分的中间过程中,当前作为中值分界点的边当然不一定被当前的最短路访问到,但是继续往左、限制越来越苛刻,到最后可以保证这一点。(想一想上一段的二分应用条件))

如果这道题仅仅是最小找最大(无向图),那么就可以像那个题一样直接并查集搞定了。。只不过顺序反一下就行。


#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
using namespace std;

const int INF = 1e9;
const int MAXN = 10001;
int N, M, T, X;

struct Edge
{
	int n, cap, time;
};
vector<Edge> ve;
vector<int> v[MAXN];
vector<int> vc;
int limit;
int d[MAXN];
bool vis[MAXN];

void init()
{
	ve.clear();
	for (int i = 1; i <= N; i++) v[i].clear();
	vc.clear();
}

void spfa(int s)                             // 这题必须上spfa
{
	queue<int> q;
	fill(d + 1, d + N + 1, INF);
	memset(vis, 0, sizeof vis);

	q.push(s);
	d[s] = 0;
	vis[s] = true;

	for (; !q.empty();)
	{
		int t = q.front();
		q.pop();
		vis[t] = false;
		for (int i = 0; i < v[t].size(); i++)
		{
			int n = ve[v[t][i]].n;
			int cap = ve[v[t][i]].cap;
			int time = ve[v[t][i]].time;
			if (cap >= limit)                   ////  筛选边!
			{
				if (d[t] + time < d[n])
				{
					d[n] = d[t] + time;
					if (!vis[n])
					{
						q.push(n);
						vis[n] = true;
					}
				}
			}
		}
	}
}

bool cmp(const int& a, const int& b)
{
	return a > b;
}

int main()
{
	int a, b, c, dd;
	scanf("%d", &X);
	for (; X--;)
	{
		scanf("%d%d%d", &N, &M, &T);
		init();
		for (int i = 0; i < M; i++)
		{
			scanf("%d%d%d%d", &a, &b, &c, &dd);
			ve.push_back(Edge{ b,c,dd });
			ve.push_back(Edge{ a,c,dd });
			v[a].push_back(i << 1);
			v[b].push_back(i << 1 | 1);
			vc.push_back(c);
		}
		sort(vc.begin(), vc.end(), cmp);                   // 这道题,用dijkstra会WA,二分没整好必然WA,这里是从大到小排序!
		int l = 0, r = M - 1, mid;
		for (; l < r;)
		{
			mid = (l + r) >> 1;
			limit = vc[mid];
			spfa(1);
			if (d[N] == INF || d[N] > T) l = mid + 1;                 // 由于除法向下去整,不可 l=mid!!
			else r = mid;
		}
		printf("%d\n", vc[l]);
	}

	return 0;
}


// 《算法笔记》P128  以后就把二分想清楚了!cap必须从大到小排才符合规矩!     
// 找cap序列中相应d[N]第一个小于等于T的位置!!

Archery通过OpenResty代理转发后登录一直提示Forbidden 测试几遍,连账号密码都没用验证,因为不管输什么都是提示Forbidden。找到配置文件settings.py,下面命令可到配置文件路径。回到页面刷新,随便输入个账号密码,验证失败证明请求成功了。查看Preview,提示CSRF验证失败,请求被中断。域名:dba.hkeasyspeed.com。打开开发者工具查看,网络里面可以看到报403。添加一条配置,把你配置域名添加进去。可以看到页面可以正常访问到。进入Archery容器。重启Archery容器。正常输入账号密码,OK。 阅读详情

相关推荐

告别SD卡!手把手教你用NVMe硬盘盒给Jetson Orin Nano离线烧录Ubuntu系统

本文详细介绍了如何利用NVMe硬盘盒为Jetson Orin Nano离线烧录Ubuntu系统,替代传统SD卡方案。通过硬件选择、系统镜像准备到烧录命令的全流程解析,帮助开发者提升存储性能与系统稳定性,特别适合嵌入式开发场景。

weixin_30808693的博客 459

时序分析、约束总结

...

xiaojianwei1994的博客 2511

基于RK3588的高效音视频对讲系统设计与实现

本文详细介绍了基于RK3588芯片的高效音视频对讲系统设计与实现。文章深入剖析了RK3588在8K编解码、高性能音频DSP及丰富接口方面的优势,并提供了从开发环境搭建、分层软件架构设计,到视频采集编码、音频回声消除及低延迟网络传输的完整实战指南,旨在帮助开发者充分利用该芯片硬件能力,构建稳定、低延迟的实时通信系统。

dapp9builder的博客 255

hdu 1839(最短路+二分)

hdu 1839 (1)题意: 有n个点,m条路径,1是起点,n是终点,最多Tmin 经过一条路径需要花费D分钟,这条路径的最大容积是C,(就是只有容积小于路径容积的货物才能通过。) 问从1~n在T分钟内,最多能运多少体积的货物。 (2)思路: 记录所有的体积,从小到大排序,二分查找最大且时间之和在T分钟之内的体积。(和西安的M题一样) (3)注意: 二分时要l...

积少成多,水滴石穿 278

c语言【分糖果】2023蓝桥杯4124(枚举,递归,dfs)

但是这是不符合我们糖果刚好分完的条件的,我们应该往回退到上一层,也就是孩子6这层,然后j+1=3,孩子7分到3个第二种糖果,这也不符合我们糖果刚好分完的条件,然后就会再次回退到孩子6这里,然后j+1=4,让我们的孩子7获得5块第二种糖果,然后还是不符合糖果刚分完的条件,于是再一次退回到孩子6这里,然后就会有外循环i+1=1,j=1,孩子7分到1块第一种糖果1块第二块糖果......然后就是这样的不停地回溯,试探,直到把整棵树遍历一遍,并且记录所有的满足条件的组合。先放一下我的代码,我的代码超时啦救命!

weixin_74331419的博客 730

PyTorch+C3D实战:用UCF101数据集训练你的第一个视频动作识别模型(附完整代码)

本文详细介绍了如何使用PyTorch和C3D模型在UCF101数据集上构建视频动作识别系统。从环境配置、数据预处理到模型训练与优化,提供了完整的代码实战指南,帮助开发者快速掌握视频行为识别技术。文章特别强调了3D卷积核设计、混合精度训练等关键技术要点,并分享了模型部署优化经验。

weixin_29233857的博客 218

HDU 1839 Delay Constrained Maximum Capacity Path(最短路+二分)

  Delay Constrained Maximum Capacity Path   Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 2235    Accepted Submission(s): 764     Pro...

shyoldman的博客 262

手把手教你用X-AnyLabeling实现医学图像标注:从SAM模型选择到多边形优化全流程

本文详细介绍了如何使用X-AnyLabeling平台结合Med-SAM等专业模型实现医学图像的高效标注。从环境配置、模型部署到实战工作流,涵盖智能辅助标注、低对比度解决方案及团队协作方案,帮助医疗从业者大幅提升标注效率与质量。特别适合处理CT/MRI等医学影像的复杂标注需求。

weixin_29251131的博客 456

20211028:DC综合时的内部时钟处理

DC综合时的内部时钟处理问题描述分析与处理方法总结 问题描述 综合时出现未约束的endpoints。 分析与处理方法 利用vcs和netlist文件来检索出现的endpoints,追溯至最原始的时钟,最原始的时钟指的是接口时钟穿透的寄存器。另一种是指端口时钟穿透的一些寄存器进行组合逻辑运算得到的内部时钟,因此会出现未约束的情况。 将追溯到的上述情况的内部时钟按照pin进行约束,因为是内部时钟无法使用port进行约束。 总结 遇到问题要善于利用vcs和dc_shell的命令工具集进行问题的分析,此处

Mr IMMUNIZE的博客 1196

达妙电机MIT模式调参实战:如何从‘曲线偏离’到‘完美追踪’正弦波?

本文详细解析了达妙电机MIT模式调参实战,从曲线偏离到完美追踪正弦波的方法论。通过MATLAB实时曲线分析,深入探讨位置环(kp)和速度环(kd)的双重调节技巧,帮助工程师优化参数组合,提升电机控制精度和稳定性。

weixin_29053073的博客 731

Simulink Test Sequence实战:5步搞定复杂逻辑测试(附Excel模板)

本文详细介绍了如何利用Simulink Test Sequence模块高效完成复杂逻辑测试。通过对比传统Excel方法的不足,阐述了Test Sequence以流程图和自然语言描述测试场景的优势,并提供了从环境搭建、逻辑构建到与Test Manager集成、利用Excel模板进行数据驱动的完整5步实战指南,帮助工程师将复杂的状态机或逻辑流测试从繁琐的‘体力活’转变为高效的‘技术活’。

snow3的博客 250

HDU1839_Delay Constrained Maximum Capacity Path(最短路+二分)

解题报告 题目传送门 题意: 有N个点,点1为珍贵矿物的采矿区, 点N为加工厂,有M条双向连通的边连接这些点。走每条边的运输容量为C,运送时间为D。 他们要选择一条从1到N的路径运输, 这条路径的运输总时间要在T之内,在这个前提之下,要让这条路径的运输容量尽可能地大。 一条路径的运输容量取决与这条路径中的运输容量最小的那条边。 思路: 二分容量建图,spfa判时间是否符合

_nplus 1857

Cadence Allegro新手避坑:从原理图到PCB,解决‘netrev.lst does not exist’的完整流程

本文详细介绍了Cadence Allegro从原理图设计到PCB导入网表的完整流程,特别针对新手常见的'netrev.lst does not exist'错误提供了系统解决方案。内容包括环境准备、原理图设计规范、网表生成与导入技巧,以及设计数据管理最佳实践,帮助工程师高效完成PCB设计任务。

weixin_42685438的博客 487

HDU-1839-Delay Constrained Maximum Capacity Path

ACM模版描述题解第一次做这种组合算法题,二分+dij,没做过很难想到这样子搞,于是参考了大牛shuangde800的代码和题解。该大牛的题解分析道:因为每条路径的容量取决于这条路径中所有边中的最小容量,所以我们可以以此枚举最小容量。 但是如果一个一个容量的枚举,那明显效率太低了。 通过分析,可以看出,如果最低容量越大,那么符合要求的路径就越少,所以,根据容量的大小,路径数量是单调的。 有了单

逐梦者 455

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【HDU 1839】 Delay Constrained Maximum Capacity Path(二分+最短路)

【HDU 1839】 Delay Constrained Maximum Capacity Path(二分+最短路) Delay Constrained Maximum Capacity Path Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Tota

ACMer' 1713

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

HDU1839---Delay Constrained Maximum Capacity Path

http://acm.hdu.edu.cn/showproblem.php?pid=1839 解题思路:二分+最短路 直接对答案进行二分枚举,然后用spfa求最短路,如果边的权值小于当前枚举的答案,那么这样的边是不能走的。 源代码: //二分+最短路 #include #include #include #include #include using namespace std;

sanmingzi3344的专栏 850

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【ICPC-313】hdu 1839 Delay Constrained Maximum Capacity Path

点击打开链接hdu 1839 思路:最短路+SPFA+二分查找 分析: 1 题目要求的是在限制时间t之内,最大的容量。而题目说了最大的容量就是路径上的最小的边值。 2 这里加了一个容量,而且是要求一条边的最短。所以这里用到了二分,因为我们知道随着边长的增大能够满足的路径越来越少,所以我们只要去枚举容量即可。 代码: #include<iostream> #include&...

藏经阁 | 玄苦 1291

HDU 1839 Delay Constrained Maximum Capacity Path(二分+最短路)

题目地址:HDU 1839 我去。。原来这题这么简单。。。网络流中这种二分建图的方式做了一大堆了。。这种题还能难倒我吗。。。白天一直没怎么看懂题,对题意懵懵懂懂的。。。晚上好好看了看题,这不就是网络流中练的最多的那种二分建图模型吗。。。。只是把网络流算法改成最短路就行了。。但是两个地方手残了没能在实验室当场A掉。。sad。。。 这题就是二分最小容量,对满足容量的加边,对时间求最短路。如果最短时

scf0920 1242

hdu 1839 Delay Constrained Maximum Capacity Path

将所有路径上的capacity保存下来,并进行二分查找,每次枚举一个capacity值,选路径是去掉capacity小于枚举值的边,判断是否存在小于等于时间t的最短路径 若存在,则枚举值满足条件,继续寻找比枚举值大的,否则,寻找比枚举值小的 只能用spfa,迪杰斯特拉超时 #include #include #include #include using namesp

yerongsc的专栏 478

hdu 1839 Delay Constrained Maximum Capacity Path

点击打开链接hdu 1839 思路:最短路+SPFA+二分查找 分析: 1 题目要求的是在限制时间t之内,最大的容量。而题目说了最大的容量就是路径上的最小的边值。 2 这里加了一个容量,而且是要求一条边的最短。所以这里用到了二分,因为我们知道随着边长的增大能够满足的路径越来越少,所以我们只要去枚举容量即可。 代码: #include&lt;iostream&gt; #includ...

我是传奇 212

hdu 1839 Delay Constrained Maximum Capacity Path 二分+ spfa

有N个点,点1为珍贵矿物的采矿区, 点N为加工厂,有M条双向连通的边连接这些点。走每条边的运输容量为C,运送时间为D。选择一条从1到N的路径运输, 这条路径的运输总时间要在T之内,在这个前提之下,要让这条路径的运输容量尽可能地大。一条路径的运输容量取决与这条路径中的运输容量最小的那条边。 带限制的最短路--- 由于每条路都是有一定容量的,相对来说,容量越大那么满足的边就越少。就可以二分容量

uuuuuu 512

HDU1839 - Delay Constrained Maximum Capacity Path - 最短路+二分

1.题目描述: Delay Constrained Maximum Capacity Path Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 1915    Accepted Submission(s): 641

终有绿洲摇曳在沙漠 452

Delay Constrained Maximum Capacity Path HDU - 1839

点击打开链接 题目要求 首先要按时到达 其次尽可能走最短路线 通过二分 看能否在以当前长度的边为最短边的情况下按时到达 若不能则下调 否则上调 因为一条路径中最短边越长 对这条路径中边的要求也就越高 某些费时更少的边就被排除了 可能导致无法按时到达 反之 超过时限的可能也就越小   #include &lt;stdio.h&gt; #include &lt;vector&gt; #i...

sunyutian1998的博客 327

hdu1839—Delay Constrained Maximum Capacity Path(spfa+二分)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1839 Delay Constrained Maximum Capacity Path Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submissio

zhiyuanjiang的博客 293
上一篇: HDU 1599 find the mincost route
下一篇: HDU 3873 Invade the Mars
Crossing over
博客等级 码龄10年 6粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值