首页 > TAG信息列表 > P1967

P1967 [NOIP2013 提高组] 货车运输

给定一张图, \(q\) 组询问从 \(s_i\) 到 \(t_i\) 路径上最大边权的最小值。 \(n < 10^4\),\(m < 5 \times 10^4\),\(q<3\times10^4\)。 首先,所有询问的答案均在原图的最小生成树上,是最小生成树的瓶颈边,因为任何不在最小生成树上的边一定比原边更大,然后问题就变成寻找树上2点的路径上

P1967 [NOIP2013 提高组] 货车运输 题解

题目描述 A 国有 \(n\) 座城市,编号从 \(1\) 到 \(n\),城市之间有 \(m\) 条双向道路。每一条道路对车辆都有重量限制,简称限重。 现在有 \(q\) 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。 输入格式 第一行有两个用一个空格隔开的整数 $ n,m$,

题目Luogu 4-P1967 货车运输

题目链接 依旧是很裸的题干 题干很清楚,肯定是图论 一开始想到单源最长路,用贝尔曼福德算法,全部边权变成相反数,后来发现不可行 因为这个题目要找的路径是边权最小值最大 最小值最大——二分 但是如果对于每个询问都二分一次再check,复杂度来到了O(n2logn)无法接受 (题解里好像有对询

P1967 [NOIP2013 提高组] 货车运输

首先能想到floyed暴力做法 60分是没问题的 进一步 两点之间路径可能会有多条 但是我们只用找到路径上最长边最小的那条 但是因为有多个询问 所以我们不能单方面考虑两个点 而是考虑很多对两个点 考虑建立最大生成树 这样的解一定是最优的!!!很巧妙 最后找两点之间的最短的那条边 用

洛谷 P1967 货车运输 java实现

题目链接:https://www.luogu.com.cn/problem/P1967是一道最小生成树+LCA的模板组合题目.代码比较长....计算最多能运送多少重量的货物,首先会想到计算最大生成树.这样就能够保证联通所有路的情况下,道路载重最大.因为最终计算的是某两点之间的最大载重量,所以我们需要计算两点之间

洛谷 P1967-货车运输

题目描述 A国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。 现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。 思路 求出这个图的最大生成树,这样就把问题转化为:树上任意两个点的路径中,边

[洛谷P1967][题解]货车运输

题目 这道题让我们求最小限重的最大值 显然可以先求出最大生成树,然后在树上进行操作 因为如果两点之间有多条路径的话一定会走最大的,而其他小的路径是不会被走的 然后考虑求最小权值 可以采用倍增求LCA,预处理时顺便把最小权值求出来 Code: 1 #include<bits/stdc++.h> 2 #defi

Luogu-P1967 货车运输

题面 分析 可以先求最大生成树森林,然后对每棵树进行树链剖分,然后乱搞... 注意,由于是边权,则统一挂向连接点的更深的(挂向浅的后果自行分析),求路径上最小边时不在同一链就普通处理,在同一链,所求区间应去掉更浅的端点。 本题我以为只有只有一棵生成树结果CCF原数据真只有一棵,感谢luogu的

P1967 货车运输

当然这题有很多做法,但是我看到没有人写DSU的很惊奇 按照之前做连双向边题的经验,这题可以用并查集维护联通 然后对于每个询问\(x,y\),考虑启发式合并 当两个点集\(x,y\)合并时,一些涉及到其中点的询问可以被解决,而遍历\(x,y\)中的询问集其实是等价的,所以可以直接用启发式合并存下这个

P1967 货车运输

容易发现此题中需要找到尽可能大的边来走? 那么我们求一棵最大生成树,把必要的边保留下来就行了。 之后要求两点间的最小边权? 你可以选择倍增,可以选择树剖,但我选择拉LCTLCTLCT的板子…(指针警告&封装警告&STL画风警告) 似乎理论复杂度优秀但常数巨大???(1000+ms without O2) 所以简单

Luogu P1967 NOIP2013 货车运输

  这个题是很经典的生成树问题。第一次接触时对倍增算法的理解还不够透彻,没能打出来正解。   首先,原题中给出的是一幅图,询问从某点出发到另一点“需要经过的最短边的最大值”。用floyd来解决是可以的,但是数据范围不能承受O(n^3)的复杂度。于是我们考虑:假设原图是连通的,那么我们

洛谷 P1967 货车运输

思路 考虑答案的运输路径。发现:能走限重大的就走。 所以要尽量把限重小的边删掉,只要图仍然联通就行。问题就转变成用最小值最大的边联通这个图。这就是最大生成树,可以用\(kruskal\)求出。 之后每次运输要使最小限重最大。但是发现有些边必须要走,而剩下的路径越短越好。\(LCA\)即可

P1967 货车运输(倍增LCA,生成树)

题目链接: https://www.luogu.org/problemnew/show/P1967 题目描述 A国有n座城市,编号从 1到n,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。 输入输出格式 输入

Luogu P1967 货车运输

qwq 这题是知道了正解做法才写的.. 求每两点间最小权值最大的路径,本来我以为要每个点都跑一遍dij(?),后来意识到生成树好像是用来找这个的( ´▽`) 然后我问dtxdalao对不对,他说“我记得这道题好像要用倍增”(我:???剧透会被关进小黑屋的) 其实就是最大生成树是随便建的,然后对于每两点,用倍增求