ICode9

精准搜索请尝试: 精确搜索
  • dijkstra最短路算法(堆优化)2022-07-22 10:00:20

    这个算法不能处理负环情况,请转到Floyd算法或SPFA算法(SPFA不能处理负环,但能判断负环) SPFA(SLF优化):https://www.cnblogs.com/yifan0305/p/16391419.html 代码很长,耐下心来看完,存储方法为链式前向星存储。 (如果内存放得下的话,建议稠密图用邻接矩阵(或者跑floyd),稀疏图用邻接表,只是

  • 牛的旅行2022-07-21 10:34:28

    难度 普及+/题高 题目 输入一个N、N个坐标和一个N行N列由0和1组成的矩阵A(数字之间没有空格),表示有 N(1≤N≤150)个牧区分别在(Xi,Yi)的地方(1≤Xi,Yi≤ 105),其中Ai,j若是1,则表示第i个牧场和第j个牧场之间有一条路,否则表示没有路,一组连通的牧区称为一个牧场,一组数据中会有至少2个牧场,求

  • 【学习笔记】树的直径2022-07-20 15:36:54

    树的直径 概述 树的直径指树上距离最远的两点间的距离,它在树上问题上有许多应用,往往通过树的直径的性质可以将一个高时间复杂度的解法变为线性求解。 定义:树中所有最短路径的最大值。 求法 贪心法: 两次bfs/dfs:先从任意一点P出发,找离它最远的点Q,再从点Q出发,找离它最远的点W,W到Q的距

  • 【DSY】Migration 题解2022-07-20 08:31:48

    DSY 传送门:Migration 二分 + 贪心 + 双向搜索(思想)。 Solution 1 看到“最大值最小”,考虑二分答案如何做。对于每个状态权值的上限 \(mid\),它的可行性是具有单调性的。直白地,当 \(mid\) 大于等于一个临界值,那么一定可以满足最大状态权值小于此上限;反之则一定不满足。 为了方便计算,

  • 【luogu P8063】Shortest paths(图论)2022-07-18 15:34:12

    Shortest paths 题目链接:luogu P8063 题目大意 给你一个无向图,然后给你最短路的路径,然后对于最短路上的每条边问你把它删掉之后图的最短路是多少,如果没有路径就输出 -1。 思路 (看旁边老哥开的题,麻了把自己搞不会了) (还得看我们的 wyc 大神) 考虑怎么弄,那感性的思想家就是最短路没了

  • 图论——Bellman-Ford算法2022-07-18 13:35:42

    在这篇里,我们讲到,对于有负权值的情况下,一般用Bellman_Ford。 今天就来详述一下Bellman_Ford与其例题。 Bellman_Ford的思想非常简单,首先第一层枚举点,第二层枚举每一条边。 与其说第一层是枚举,其实不如说它是单纯循环,因为,有些题目中,第一层就是单纯循环,对于需要枚举节点的题目来说,它

  • 题解 CF1707C【DFS Trees】2022-07-18 12:31:09

    因为所有边权两两不同,所以 MST 是唯一的,我们把 MST 上的边标记出来。 我们知道对图进行 DFS 后,只有树边和返祖边两类边。要使得 MST 上的边均为树边,则不在 MST 上的边只能为返祖边。也就是说,不在 MST 上的边在当前根下必须是祖先后代关系。 至此,原问题转化为:判断每个节点作为根时,

  • dijkstra及其应用2022-07-18 10:41:41

    单源最短路径 使用“堆优化的”dijkstra 算法,每次对刚刚加入的点进行一次拓展,然后找出 dis 里面最大的一个。 时间复杂度:\(O((|V|+|E|) \log |V|)\),其中每一条边最多只会查找两次,优先队列的操作是每次 \(O(\log n)\) 的,一共 \(O(n\log n)\)。反正知道是 log 的就行。 板子: #includ

  • 1504:【例 1】Word Rings2022-07-18 08:31:48

    【题目描述】 原题来自:Centrual Europe 2005 我们有 n 个字符串,每个字符串都是由 a 至 z 的小写英文字母组成的。如果字符串 A 的结尾两个字符刚好与字符串 B 的开头两个字符匹配,那么我们称 A 与 B 能够相连(注意:A 能与 B 相连不代表 B 能与 A 相连)。我们希望从给定的字符串中找出

  • 图论杂算法选讲2022-07-15 09:31:44

    差分约束 例题:P5960 【模板】差分约束算法 给出一组包含 \(m\) 个不等式,有 \(n\) 个未知数的形如: \[\begin{cases} x_{c_1}-x_{c'_1}\leq y_1 \\x_{c_2}-x_{c'_2} \leq y_2 \\ \cdots\\ x_{c_m} - x_{c'_m}\leq y_m\end{cases} \]的不等式组,求任意一组满足这个不等式组的解。 对于

  • Codeforces Round #805 (Div. 3)G2. Passable Paths2022-07-14 13:05:47

    题目大意:   给出一个无向无环连通图(树),n个点n-1条边,m次查询,每次询问给出一个集合,问集合里的树是否都在同一条链上(即能否不重复的走一条边而遍历整个点集)   思路:通过求lca,若有三个点x,y,z   如果满足dix(x,y)+dix(y,z) == dix(x,z),说明此时y位于x,z之间,此时他们就在一条链上,只

  • 1040 [NOIP2005]过河 装箱问题+离散化2022-07-13 16:31:08

    链接:https://ac.nowcoder.com/acm/contest/24213/1040来源:牛客网 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青

  • 【题解】[CQOI2015]网络吞吐量 最短路+最大流+拆点2022-07-12 14:03:39

    [CQOI2015]网络吞吐量 题目传送门:洛谷P3171 [CQOI2015]网络吞吐量 题目背景 路由是指通过计算机网络把信息从源地址传输到目的地址的活动,也是计算机网络设计中的重点和难点。网络中实现路由转发的硬件设备称为路由器。为了使数据包最快的到达目的地,路由器需要选择最优的路径转发数

  • 洛谷 P4510 - [CTSC2015]性别改造计划(网络流+状压 dp)2022-07-12 12:32:15

    洛谷题面传送门 一道很烦的网络流题,代码每一块的结构都很清晰,但是拼起来就让人觉得很烦…… 首先此题的一大难点在于读题,我一开始傻傻地以为散点没有用,心想这题不是 sb 状压 dp 吗,后来才发现是自己都错题了……事实上本题正确的题意如下: 对于血缘链上的点,任何一条链上的第 \(j\)

  • 7.11 【左偏树】2022-07-11 09:37:00

    \(\large\text{Date: 7.11}\) 左偏树(可并堆) \(\large\to\text{Link}\leftarrow\) 原理 定义: 若一个节点有儿子是空的,那么这个节点就叫空节点。而一个节点的 \(dis\) 值代表从这个节点出发,只经过右儿子到达一个空节点最少需要走的边数。 左偏树 的意思是:对于一棵树上的每一个节点,其

  • 【学习笔记】网络流2022-07-11 07:01:33

    发现自己对网络流的理解更深了,所以就写一篇学习笔记了。 网络流基础: 最大流的概念: 流网络:一个有向图(\(G = (V,E)\)),包含一个源点和一个汇点,每条边都有一个权值代表容量(\(c\))。 可行流:给每一条边指定一个流量(\(f\)),当任意一条边都满足以下条件时,这个图就叫做一个可行流: 容量限制:任意

  • AtCoder Beginner Contest 2592022-07-10 00:00:26

    AtCoder Beginner Contest 259 https://atcoder.jp/contests/abc259 先把D放这里,其他的明天补上来 D - Circumferences 题源:abc259_d 人生中第一次做出D题于是就来发题解了 题目描述 给定n个圆(圆心坐标和半径r),以及起点和终点的坐标(这两点必在某个圆上)。 已知 点可以沿着圆的边

  • SPFA算法(SLF优化)2022.7.8更新2022-07-08 22:02:36

    SPFA可能会被卡掉,能用dijkstra就别用SPFA,代码较长,但我已尽力做到解释,请耐心看下去,存储为邻接表存储。 #include<bits/stdc++.h> #define inf 0x3f3f3f3f//(宏定义一个很大的值,例如0x3f3f3f3f等) using namespace std; int n,m,cnt;//cnt 计数器(有cnt条边) struct edge//结构体定

  • 【kuangbin】专题四 最短路2022-07-08 12:33:06

    【kuangbin】专题四 最短路 https://www.acwing.com/activity/content/90/ (没做的那道是网络流) 先把代码放这...吃完饭回来再总结 1. 青蛙 #include <bits/stdc++.h> using namespace std; typedef pair<int, int> pii; typedef pair<double, int> pdi; //距离 编号 const int

  • 洛谷P8201 生活在树上(Hard Version) 题解2022-07-06 21:36:25

    题目链接:P8201 生活在树上(hard version) 题意 给定一个点带权的树,点数为 \(n\),第 \(i\) 个点的权值为 \(w_i\)。 定义两点之间的路径为路径上所有点的点权的按位异或和,即 \(dis(a,b)\)。 现在有 \(m\) 次询问,每次询问给定三个数 \(x,y,k\),问是否存在 \(t\),使得 \(dis(t,x)\oplus di

  • 最短路常用算法2022-07-03 19:04:50

    弗洛伊德(Floyd-Warshall) 时间复杂度\(O(n^3)\) 多元最短路,核心思想是依次将所有点作为中转点并更新所有路径。 核心代码也只有5行 for(int i=1;i<=n;++i)//外层循环一定是中转点 for(int j=1;j<=n;++j) for(int k=1;k<=n;++k) if(g[j][k]>g[j][i]+g[i][k])

  • A*算法小记2022-07-02 21:02:34

    \(\text{A*}\) 一种启发式搜索 和暴搜的差别是多了一个估值函数,每次取出一个估算最优的状态以期更高效完成任务 重点在于估值函数 \(\text{h*(n)}\) 的设计,若实际代价为 \(\text{h(n)}\),则 若 \(\text{h*(n)=h(n)}\),设计得非常好 若 \(\text{h*(n)<h(n)}\),跑得更快,只是可能搜不出

  • AtCoder Beginner Contest 257 A - F2022-07-02 15:33:34

    传送门 vp 了一场之前的 ABC,不知道是水平下降还是真的难,就很多要想很久,寄了 A - A to Z String 2 向下取整考虑一下是在哪个组就好 #include <iostream> using namespace std; int main() { int n, x; cin >> n >> x; x--; x /= n; cout << (char)('A' + x)

  • Colorful Tree2022-06-30 23:32:26

    Colorful Tree 题目大意 给我们一棵树,每个节点有一个颜色。 需要完成两个操作。 求某一种颜色的最小生成树的边数 将某一个节点的颜色改为另一种颜色 思路 不得不提到一个名词,虚树。虚树的概念大就是说我们不用真的把每一次改变后的树都重新建出来,我们只需要维护某些性质即可。

  • [cf1458F]Range Diameter Sum2022-06-29 09:05:37

    考虑分治,分别求出左侧后缀和右侧前缀的直径,即需将两者两两合并: 将直径以长度和中心点(将边拆点,使长度为偶数)的方式描述,分别记为$d$和$u$ 此时,对于$(d_{1},u_{1})$和$(d_{2},u_{2})$,合并后的直径长度即$\max\{d_{1},d_{2},\frac{d_{1}+d_{2}}{2}+dis(u_{1},u_{2})\}$ 若直径两端点

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

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

ICode9版权所有