点此看题面 大致题意: 有\(n\)个城市和\(m\)条道路,每条道路有一个限重.多组询问,每次询问从\(x\)到\(y\)的最大载重为多少. 一个贪心的想法 首先,让我们来贪心一波. 由于要求最大载重,显然要让最小限重尽量大. 不难发现,想要让最小限重尽量大,所经过的路径一定都在原图的最大生成树上. 于是,我们就可以用求最大生成树的方法来将原图转化为一棵树. 这样一来,原题就转化成了求树上两点之间的最小边权值. 这应该是可以直接用倍增\(LCA\) 来搞的吧. 如何用倍增\(LCA\)求树上两…
[Luogu 1967] NOIP2013 货车运输 一年多前令我十分头大的老题终于可以随手切掉了- 然而我这码风又变毒瘤了,我也很绝望. 看着一年前不带类不加空格不空行的清纯码风啊,时光也好像回去了一样.//其实一年前我在这题上试过写类来着,结果,当然是写挂了啊. 众人:别废话了,赶紧讲题! Capella:好,好- 对于每两个点之间的路径,我们希望路上的最小限重尽可能大,以确保运输更多的货物.所以,我们总是会选择限重尽可能大的路去走. 于是对原图(的每一个连通块)求最大生成树,将问题转化为树…
目录 洛谷 P1967 货车运输 原题 题解 思路 代码 洛谷 P1967 货车运输 原题 题面请查看洛谷 P1967 货车运输. 题解 思路 根据题面,假设我们有一个普通的图: 作图工具:Graph Editor 考虑从顶点\(1\)走到顶点\(3\): 路径\(1 \to 3\)(最大运货量为\(1\)): 路径\(1 \to 2 \to 3\)(最大运货量为\(3\),更优). 所以我们可以删掉\(1 \to 3\)这条边,形成了一棵树,通过多次观察发现,这是一颗原图的最大生成树. 问题就…
洛谷P1967:https://www.luogu.org/problemnew/show/P1967 思路 感觉2013年D1T3并不是非常难 但是蒟蒻还是WA了一次 从题目描述中看出每个点之间有许多条路径 而我们需要的是找出整条路径中最大的最小可通过量 一开始看到题目会想到是不是最大流问题 但是仔细一想其实并不用那么麻烦 我们只需要用kruscal找出最大生成树即可(因为多条路径中只要挑出最大的即可) 然后在重构树上考虑怎么取到两点之间的最小值 我们发现图是一个或者是多个树(没有考虑WA了一…
题目 这道题让我们求最小限重的最大值 显然可以先求出最大生成树,然后在树上进行操作 因为如果两点之间有多条路径的话一定会走最大的,而其他小的路径是不会被走的 然后考虑求最小权值 可以采用倍增求LCA,预处理时顺便把最小权值求出来 Code: #include<bits/stdc++.h> #define IO4 10000+10 #define debug cout<<"Error"<<endl using namespace std; int n,…
NOIP2013 货车运输(最大生成树,倍增) A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物.n=1e4,m=5e4. 首先肯定是跑一个最大生成数辣-跑完以后倍增lca即可.注意kruskal的写法,并查集一定要写对! #include <cstdio> #include <algorithm> using namespace…
货车运输 题目链接 显然,从一点走到另一点的路径中,最小值最大的路径一定在它的最大生成树上 所以要先求出最大生成树,再在生成树上找最近公共祖先,同时求出最小值. #include<iostream> #include<cstdio> #include<algorithm> #include<vector> #include<cmath> using namespace std; ; ],deep[MAXN],minn[MAXN][]; bool…
P1967 货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物. 输入输出格式 输入格式: 输入文件名为 truck.in. 输入文件第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道 路. 接下来 m 行每行 3 个整数 x. y. z,每两个整数之间用一个空格隔开,表示从 x 号城市到 y…
题目传送门 A 国有 n 座城市,编号从 1 到 n ,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重. 现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物. 思路 这题思路想明白了就很简单,一句话题意:求树上两点间路线中边长最小的边权. 首先,为什么是树呢?限重肯定越大越好,因此我们可以跑出图的最大生成树(Kruskal) 之后,我们就可以对于每次询问来求出路径上的最小边权(最多能运的货物重量),这里可以用到树上倍增法(求LCA时…
死磕一道题,中间发现倍增还是掌握的不熟 ,而且深刻理解:SB错误毁一生,憋了近2个小时才调对,不过还好一遍AC省了更多的事,不然我一定会疯掉的... 3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每…