ICode9

精准搜索请尝试: 精确搜索
  • J [NOIP2013]货车运输 lca 最大生成树 点和点之间所有路径最小值的最大值2022-08-31 17:33:35

     链接:https://ac.nowcoder.com/acm/problem/16527来源:牛客网 题目描述 A 国有 n 座城市,编号从 1 到 n ,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运

  • P1967 [NOIP2013 提高组] 货车运输2022-08-31 13:02:07

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

  • P1967 [NOIP2013 提高组] 货车运输 题解2022-08-19 00:01:52

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

  • 题目Luogu 4-P1967 货车运输2022-07-25 09:31:36

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

  • P1967 [NOIP2013 提高组] 货车运输2022-04-22 16:01:58

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

  • NOIP 2013 提高组 洛谷P1967 货车运输 (Kruskal重构树)2022-04-04 19:33:51

    题目: A 国有 nn 座城市,编号从 11 到 nn,城市之间有 mm 条双向道路。每一条道路对车辆都有重量限制,简称限重。 现在有 qq 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。     对于每一组询问,相当于求点x到点y中所有路径中最小边权的

  • 货车运输(详细揭秘)2022-02-07 20:01:38

    一个 \(\log\) 的树剖解法!!! 好吧不滥用标题行了 . 注意到没有修改,轻重链剖分,链用 st 表维护,时间复杂度 \(O(q\log n)\) . #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <ctime> #include <vector> #include <queue&g

  • 洛谷 P1967 货车运输 java实现2021-04-30 18:02:00

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

  • 洛谷 P1967-货车运输2021-02-18 17:34:33

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

  • [洛谷P1967] 货车运输(最小生成树+树剖+RMQ)2020-12-06 02:34:34

    原题 思路 先求出最大生成树,然后对每个询问求LCA,求两点走向LCA路径上的最小权值,树剖实现,求最小值懒得写线段树用了RMQ,虽然r<l的情况没特判调了很久。还是比较简单的模板题,但是找了很久bug。 #include <algorithm> #include <cmath> #include <cstdio> #include <cstring> #include

  • [NOIp2013] 货车运输 题解2020-11-05 15:00:28

    这题好。结论非常清新。 给你一个 \(n\) 个点的图,共有 \(m\) 条边。有 \(q\) 次询问,每次询问两点 \(x\) , \(y\),求从 \(x\) 到 \(y\) 的最小路径最大值。 kruskal 构造最大生成树,将其余的边去除。在这棵最大生成树上跑 LCA 就可以了,dfs 时统计到 \(2^i\) 级的祖先的最小路径最大值,

  • LCA题目选讲32020-09-23 09:00:36

    [NOIP 2013]货车运输 需要找到一条边权最小值最大的路径,我们可以先在图中求出一个最大生成树,然后易证树上的路径的边权最小值是所有可能的路径里最大的。 我们通过LCA求出树上的路径,并且在倍增的时候更新路径最小值。

  • luoguP1967 货车运输2020-07-28 21:34:30

    题面 #include <bits/stdc++.h> using namespace std; template<typename temp> void read(temp &x){ x = 0; temp f = 1; char ch; while(!isdigit(ch = getchar())) (ch == '-') and (f = -1); for(x = ch^48; isdigit(ch = getchar()); x = (x

  • [洛谷P1967][题解]货车运输2019-12-22 17:00:25

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

  • 【NOIP2013】货车运输2019-11-15 22:04:20

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

  • [NOIP 2013] 货车运输 题解2019-11-08 21:57:29

    题解: 首先,题目要求我们求两点间所有路径的最小边权,我们要做的是最大化这个最小边权,我们可以搞一颗图的最大生成树,这样这个最小边权一定是最大的。我们可以考虑反证法,若存在另一条路径上的最小边权大于最大生成树上的路径的最小边权,那么显然我们可以通过断掉最大生成树上的边连另

  • Luogu-P1967 货车运输2019-10-28 23:01:55

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

  • 「NOIP2013」货车运输2019-10-26 22:02:41

    传送门 Luogu 解题思路 首先 \(\text{Kruskal}\) 一下,构造出一棵森林。 并查集还要用来判断连通性。 倍增 \(\text{LCA}\) 的时候顺便维护一下路径最小值即可。 细节注意事项 代码稍微有点长,不要出小问题 参考代码 #include<cstdio> #include<algorithm> using std::sort; const

  • [2019 CSP-S赛前集训] 货车运输2019-10-18 22:00:46

    题目意思大概是要求路径的最小权值的最大值,我们可以将权值小的无关紧要的边去掉; 方法可以使用最大生成树重新建图,然后再最大生成树上用LCA来回答每一个询问. 这里博主使用倍增求LCA的,当时太菜了,没想到用倍增直接来存权值,就通过每个点的fa数组来求到LCA路径上的最小权值; 1 #inclu

  • LuoguP1967 货车运输 LCA2019-10-07 22:58:34

    lca的倍增策略不仅可以维护最近公共祖先,还可以维护其他具有区间可维护性的信息,例如本题中维护的最小限重。 本题调了好久,最后发现原因是数组用混了。以后一定要记准各个数组含义,千万不要混啊。。。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #includ

  • 洛谷P2967 货车运输2019-10-04 10:55:44

    题意:给出一张无向图,有q次询问,每次给出u v两个点,求u到v时经过的权值最小的边 解法:kruskal最小生成树+LCA #include<iostream>#include<algorithm>#define re register using namespace std;const int MAXN=10000+5,MAXM=50000+5,INF=0x7fffffff;struct kEdge{int u,v,w;}a[MAXM];s

  • $Noip2013/Luogu1967$ 货车运输 最大生成树+倍增$lca$2019-10-03 15:01:46

    $Luogu$   $Sol$ 首先当然是构建一棵最大生成树,然后对于一辆货车的起点和终点倍增跑$lca$更新答案就好.记得预处理倍增的时候不仅要处理走了$2^i$步后是那个点,还有这中间经过的路径权值的最小值以便之后统计答案. 再一看发现这题并没说给的图是联通的,也就是说跑了最大生成树之

  • noip2013day1-货车运输2019-08-11 09:00:49

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

  • P1967 货车运输2019-08-10 18:00:53

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

  • 倍增2019-08-03 17:03:31

    1.倍增求LCA 货车运输 2.倍增+线性基 SCOI2016幸运数字 3.预处理出最小点和次小点 开车旅行 4.倍增+floyd 跑路 5.倍增+二分 疫情控制 6.倍增+基环树 P3533

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有