ICode9

精准搜索请尝试: 精确搜索
  • 2022 nowcoder牛客多校6 C.Forest2022-08-07 16:33:03

    problem 给你一个n<=16的图,求所有生成子图的最小生成森林边权之和。 solution 按照边权枚举每条边的贡献。 考虑[1,i-1]的边权和[i+1,m]的边权。 后者的边权可以随便拿,$ 2^{m-i} $ 考虑前者,当一个子图的u和v已经联通了,就是没有贡献的,其他的情况则都会有贡献。 用总的方案$2^i$减去

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

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

  • 最小生成树_prim算法2022-07-23 18:03:11

    P3366 【模板】最小生成树 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 输入格式 第一行包含两个整数 N,MN,M,表示该图共有 NN 个结点和 MM 条无向边。 接下来 MM 行每行包含三个整数 X_i,Y_i,Z_iXi​,Yi​,Zi​,表示有一条长度为 Z_iZi​ 

  • Kruskal算法求最小生成树2022-07-16 12:31:46

    例题链接 Kruskal算法的对比prim的区别是,前者使用了并查集的思路,而后者类似于Dijkskal算法。操作策略是,对所有边权进行从小到大的排序,然后从小到大遍历所有边权去选择,一个边被选择的条件是,这条边的两个端点位于不同的集合,即二者的find函数得到的值不同,然后将两个点加到同一个集合

  • 2021CCPC网络赛I Public Transport System2022-07-14 18:04:25

    2021CCPC网络赛I Public Transport System 题目链接   题目中每条边边权上存在两个值,考虑将其变成一个值后进行单源最短路算法。   不难看出,一条边的边权有取决于上条边的边权,可以想到将所有可能出现的边权与上条边权情况全部表达出来。那么对于一个入度为\(u\),出度为\(v\)的

  • 平面图转对偶图2022-07-08 21:36:12

    平面图转对偶图常用于解决平面图的最小割问题。 所谓平面图,就是能够在纸上画出来任意两边不在非顶点处相交的图。 对偶图是相对于一个平面图而言的。由于平面图的性质,你可以在纸上看到一些由边围成的许多封闭的面,假如把这些面编个号,看成节点,把两个面的交边映射到两个面所代表的节

  • 图的存储2022-07-03 19:33:31

    前提: 在 OI 中,想要对图进行操作,就需要先学习图的存储方式。 假设有一个有图,有n个点,m条边,从点到另一点的边权为w,现要存储这个图共有几种办法?   方法一:邻接矩阵 首先,定义一个n*n的数组data,data[ i ][ j ]表示从点i到点j是否连通。 1 int data[n][n]=0; 接着输入每一条边并存入数

  • 树链剖分2022-07-02 13:12:30

    目录树链剖分前言模板P3384P2590P3178P3833P2146P4114P4315P1505CF343DCF877EP6157P3979P2486 树链剖分 前言 我认为树链剖分是一种工具而不是数据结构 它能让你处理树上的链的操作 感觉像是 序列 \(\rightarrow\) 树 的一种媒介,序列问题 \(+\) 树剖 \(=\) 树上问题 是这样没错了

  • Boruvka 算法2022-06-25 18:34:46

    Boruvka算法解决某些问题超级好用。 这些问题形如,给你n个点,每个点有点权,任意两个点之间有边权,边权为两个点权用过某种计算方式得出。 求最小生成树。 通常用 \(O(log n)\) 的时间可以找到与点i连边的边权最小的j。 我们考虑这样一个求最小生成树的算法: 考虑维护当前的连通块(初始每

  • P3783口胡2022-06-16 10:33:00

    题意有些复杂所以我在这里说一下。。。 给定一张图 \(G\) 和一棵树 \(T\),图上每条边有一个边权 \(w\) 和树上的一个节点 \(u\),经过一条边 \(a\) 后再经过一条边 \(b\) 的代价为 \(b.w+LCA(a.u,b.u)\),求 \(1\) 节点到每个节点的最短路。经过第一条边的代价仅为 \(a.w\)。 首先容易

  • CF1687B Railway System 题解2022-06-15 22:04:08

    题目传送门 可能更好的阅读体验 题目大意 交互题,给定 \(n,m\),代表有一张 \(n\) 个点 \(m\) 条边的带权无向图。 每次询问,可以删除一些边(询问独立),得删掉这些边的最大生成森林。 现在 \(2m\) 次询问内求整张图片的最小生成森林。(最后输出答案不算询问) \(n,m\le 500\) 生成森林的定义

  • CF DS题做题笔记(持续更新)2022-06-12 10:34:42

    CF DS题做题笔记(持续更新) 题目来源:Codeforces 的 problemset内,difficulty 2300-2600,并包含“data structures”的 tag。 1681F 题意:给定一棵树,边有边权 \(w_i\),定义 \(f(u,v)\) 为,\(u,v\) 路径上只出现一次的权值个数,求 \(\sum_{1\le u < v \le n} f(u,v)\),\(1 \le n,w_i \le 5 \t

  • cf437 D. The Child and Zoo2022-06-08 19:00:10

    题意: 给定带点权、无自环和重边的连通无向图,定义一条路径的价值为经过的最小点权,定义 \(f(u,v)\) 为 \(u\) 到 \(v\) 的价值最大的路径的价值。求 \(\frac{\sum\limits_{u\neq v} f(u,v)}{n(n-1)}\) 思路: 把点权转成边权:一条边的边权为两端点点权的最小值 然后用并查集求最大生成

  • Codeforces Round #796 (Div. 2) Solution Set2022-06-04 01:32:40

    没有打 div1,小失策。 网断了,很脑残。 开题顺序:d(pre) e a b (dc/cd) f 2a: 如果二进制只有一位,那就是带上这个二进制位加一(如果 \(n=1\) 那就答案是 \(3\)),不然的话你直接取 lowbit 就好了 2b: 如果有一个奇数,答案是偶数个数;如果全是偶数,那么保留二进制位最低的那个,先除到奇数,然后

  • [luogu8331]简单题2022-05-30 19:35:37

    建立(广义)圆方树,并倍增维护答案信息(路径数和路径边权和) 显然答案信息可以支持合并,进而仅需求出同一个点双内两点的答案信息 结论:点双中存在两点$x,y$,使得整个点双恰由$x,y$间若干条不交的简单路径构成 对点双建立dfs树,并记$s$为简单环的边权和(修改边权前) 性质:若两条返祖边有交(指覆

  • CF938D题解2022-05-20 20:01:40

    题面 Description: 给定一个 \(n(1\leq n\leq2\times10^5)\) 个点的无向图 \(G\) 和数组 \(a\),对于每个 \(i(1\leq i\leq n)\),求出 \(\min_{j=1}^n(2\times\operatorname{dis}(i,j)+a_j)\)。 因为题目把所有路径长度乘了个 \(2\),所以下文的讲述中默认将边权 \(\times2\)。 如果我

  • 题解【CF1082G Petya and Graph】2022-04-09 09:02:01

    传送门。 $\texttt{Description}$ 定义图权 $=$ 图中边权总和 $-$ 图中点权总和。求无向图最大权子图。 $1\le n,m\le 10^3$. $\texttt{Solution}$ 最大权子图模型,考虑用最小割来解决。 所以说一个初步思路是选择所有边,然后 扣去一些边权(不选这个边) 扣去一些点权(选择了相应的边,但

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

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

  • CF1633E Spanning Tree Queries2022-03-31 09:33:21

    CF1633E 原题链接 ←Click it 题目大意:给定一个无向带权图,现有\(k\)次询问,每次询问一个\(x\),对每次询问,边权的价值是\(|w_i-x|\),求出最小生成树的价值,最终的答案是对所有的询问结果取异或。 解题思路:我们先来回忆一下kruskal算法,先将所有边权升序排序,然后依次选边添加到集合中,可以

  • AcWing 356 次小生成树2022-03-30 07:31:49

    题目传送门 一、题目分析 本题要求严格的次小生成树,之前在\(AcWing\) \(1148\) 秘密的牛奶运输里也曾求过次小生成树,但是本题的数据范围更大,对时间复杂度的要求也更高。回忆下秘密的牛奶运输那题的基本思路。 在最小生成树中,连接生成树中任意两点$u$和$v$,则上图中由$u$到$v$构成

  • 图的存储、遍历(BFS、DFS)2022-03-25 20:00:23

    一、图的存储      1、邻接矩阵(二维数组)             int mp[N][N];            2、边缘列表(结构体)            tip:用的很少,适用于需要对边权排序的题目 struct Edge { int u,v; }g[N];        3、邻接表            1)vector数组(c++自

  • 树的直径教学思路2022-02-26 16:36:10

    树的直径教学思路 首先根据树的直径的性质,即它为树上两个最远点的距离,推出求解找出直径的两种方法.1:两次遍历法.适用条件:树上的边权必须为正,如果边权为负则不再适用2:最长链加次长链适用条件:边权可正可负,相较上一种方法,它可求解出关于子树更多的信息,例如求树上所有点,均

  • 最小瓶颈生成树2022-02-09 23:03:12

    一、定义 给出带权无向图,求一棵最大边权值尽量小的生成树。 二、结论 可以转化为最小生成树问题,最小生成树不仅可以得到最小的权值之和,其最大边权也为生成树中最大边权最小的。 但是要注意的是最小瓶颈生成树不一定是最小生成树,但最小生成树一定是最小瓶颈生成树。如下图:   三

  • #4973. [Lydsy1708月赛]比特战争2022-02-04 22:32:47

    4973. [Lydsy1708月赛]比特战争 这个题确实是有点妙... 首先我们可以考虑最终的答案是怎么样的,肯定是若干个连通块,和一些单独的点,考虑它们对答案的贡献分别是什么,单独的点肯定是\(a_i*b_i\),连通块的话考虑所有的点和所有的边都被占领了,所有贡献为\(max(maxa_i,maxc_i)*minb_i\),简

  • HDU 6166 Senior Pan 题解(二进制分组+最短路)2022-01-21 19:31:07

    题目大意 hdu oj已挂,就不写代码了 有一个 n 个点 m 条边的有向带边权图。现在给你 k 个点, 问 k 个点中最近的点对距离。 n, m, k <= 100000 题目思路 思考一个问题: 给定两个点集A和B,求A中的点到B中的点的最近距离。 新建一个源点S,往A中的所有点连一条边权为0的边。 新建一个汇点T,B

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

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

ICode9版权所有