dijkstra acwing 849

【Dijkstra】最短路算法的一种

首先,本文默认读者基本熟悉Dijkstra基本原理 DIjkstra是单源最短路的一种算法。使用数组d[i]来储存结点i到源点s的最短路径长度,每次更新d[i]数组后,d[i]中最小的一定是一条最短路径长度。也就是说每次更新后都能找到一条最短路径,以下给出证明: 假设d[]数组中当前最小值对应的结点 ......
算法 Dijkstra

Acwing.第137场周赛

Acwing.第137场周赛 比赛地址 寒假回家第一场周赛,明天正式开始加训 A.小写字母数量 题目 思路: 简单的模拟,统计一下小写字母的数量而已 代码: #include<bits/stdc++.h> using namespace std; #define int long long cons ......
Acwing 137

Dijkstra实现单源最短路

Dijkstra算法求单源最短路 Dijkstra算法应用于求一个给定图的单个源点到其他各顶点的最短路。其中应用Dijkstra算法的图应满足如下条件 图中没有负权边 有向或者无向图都可以 图中若有自环或者重边也可以(需要自己先筛选一下) Dijkstra算法的核心就是从源点开始对各个顶点进行松弛操 ......
Dijkstra

P1339 [USACO09OCT] Heat Wave G 最短路入门题 Dijkstra/SPFA/Dijkstra+优先队列优化

目录朴素的 Dijkstra 算法SPFA 算法Dijkstra + 优先队列优化 题目链接:https://www.luogu.com.cn/problem/P1339 题目大意:无向图有单源最短路。 朴素的 Dijkstra 算法 时间复杂度 \(O(n^2)\)。 #include <bits ......
Dijkstra 队列 P1339 USACO 1339

Acwing.第135场周赛

比赛地址 A.买苹果 题目 思路: 简单的模拟一下就好了 代码: #include<bits/stdc++.h> using namespace std; void solve(){ int n,x; cin>>n>>x; cout<<n/x<<endl; return ; } int main() ......
Acwing 135

Python实现dijkstra算法

dijkstra.py: import yaml import copy class Dijkstra: def __init__(self, path, start_node): self.data = self.config_reader(path) self.start_node = star ......
算法 dijkstra Python

Dijkstra学习笔记

模板题:P4779 Dijkstra算法 \(Dijstra\)算法是一种求解非负权图上单源最短路径的算法,这种算法不可以解决负环问题。 做法 首先要定义松弛操作。对于一条边(\(u,v\)),松弛操作对应下面的运算:\(dis_{v}\) = \(dis_{u}\) + \(w_{u,v}\)。 ......
Dijkstra 笔记

dijkstra最短路

给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。 输入格式 第一行包含整数 n 和 m。 接下来 m行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y的有向边,边 ......
dijkstra

Acwing.第134场周赛

Acwing.第134场周赛 比赛地址 A排序 题目 思路: 简单的模拟 代码: #include<bits/stdc++.h> using namespace std; void solve(){ int a,b,c; cin>>a>>b>>c; int ans=a+b+c; int maxn=m ......
Acwing 134

AcWing 849. Dijkstra求最短路 I

#include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N=510,M=100010; int h[N],e[M],ne[M],w[M],idx; int state[N]; in ......
Dijkstra AcWing 849

Acwing秋季每日一题补题---搜索字符串

搜索字符串 题目链接 思路: 字符串哈希+滑动窗口 当然因为符合题意的子串会重复,所以我们要考虑去重的问题 代码: #include<bits/stdc++.h> using namespace std; #define int unsigned long long const int N=2e5+ ......
字符串 字符 Acwing

AcWing 848. 有向图的拓扑序列

#include<iostream> #include<algorithm> #include<cstring> #include<queue> using namespace std; const int N=1e5+10; int e[N],ne[N],h[N],idx; int d[N],n, ......
有向图 拓扑 序列 AcWing 848

AcWing 847. 图中点的层次

#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> using namespace std; const int N=1e6+10; int n,m; int h[N],e ......
层次 AcWing 847

ACwing343.排序

1.Floyd写法: #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int N = 26; int n, m; bool d[N][N]; bool st[N]; int ......
ACwing 343

Dijkstra单源最短路模板

struct DIJ { using i64 = long long; using PII = pair<i64, i64>; vector<i64> dis; vector<vector<PII>> G; DIJ() {} DIJ(int n) { dis.assign(n + 1, 1e18); ......
Dijkstra 模板

Dijkstra

引言 \(Dijkstra\) 算法是用来解决单源正权最短路问题的算法。 原理 进行 \(n\)(\(n\)为顶点的个数)次迭代去确定每个点到起点的最小值 最后输出的终点的即为我们要找的最短路的距离。 每次迭代的过程中我们都先找到当前未确定的最短距离的点中距离最短的点。 然后用这个去更新其余未确定点 ......
Dijkstra

二分——acwing算法基础课笔记

个人笔记,欢迎补充、指正。 此次完全以个人理解来写。 整数二分 整数二分有两种,分别是找左边界和找右边界。 寻找符合要求的左边界:绿色点 int bsearch_1(int l, int r) { while (l < r) { int mid = l + r >> 1;//对应下界,最左 if ( ......
基础课 算法 基础 笔记 acwing

Acwing 840. 模拟散列表

题面: 维护一个集合,支持如下几种操作: I x,插入一个整数 \(x\); Q x,询问整数 \(x\) 是否在集合中出现过 现在要进行 \(N\) 次操作,对于每个询问操作输出对应的结果。 原题链接:840. 模拟散列表 - AcWing题库 哈希表[1] 基本概念 哈希表也叫散列表,通过将键映 ......
Acwing 840

AcWing 802. 区间和

题面: 假定有一个无限长的数轴,数轴上每个坐标上的数都是 \(0\) 。 现在,我们首先进行 \(n\) 次操作,每次操作将某一位置 \(x\) 上的数加 \(c\) 。 接下来,进行 \(m\) 次询问,每个询问包含两个整数 \(l\) 和 \(r\) ,求出在区间 \([l,r]\) 之间的所有 ......
区间 AcWing 802

59AcWing 840. 模拟散列表

点击查看代码 #include<iostream> #include <cstring> using namespace std; const int N=200003,null=0x3f3f3f3f; int h[N]; int find(int x){ int k=(x%N+N)%N;//索引 ......
AcWing 840 59

路径规划算法 - 求解最短路径 - Dijkstra算法

Dijkstra算法的思想是广度优先搜索(BFS) 贪心策略。 是从一个顶点到其余各顶点的最短路径算法,节点边是不各自不同的权重,但都必须是正数 如果是负数,则需要 Bellman-Ford 算法 如果想求任意两点之间的距离,就需要用 Floyd 算法 求节点0 -> 4 的最短路径 每次从未标记的 ......
算法 路径 Dijkstra

Acwing 5367. 不合群数

题面: 如果一个正整数无法被 \([2,a]\) 范围内的任何整数整除,则称其为不合群数。 请你计算并输出 \([2,b]\) 范围内的最大不合群数。 提示:\(10\) 亿内的最大质数是 \(999999937\),且相邻质数之间的差值均不超过 \(300\) 原题链接:5367. 不合群数 - ......
Acwing 5367

AcWing 1205. 买不到的数目

题面: 水果糖被包成 \(n\) 颗一包和 \(m\) 颗一包的两种,用这两种包装来组合,不能拆包卖。 在 \(4\) 颗一包和 \(7\) 颗一包的情况下,最大不能买到的数量是 \(17\) 。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。 原题链接:1205. 买不到的数目 - ......
数目 AcWing 1205

ACwing342. 道路与航线

这道题是把拓扑排序和迪杰斯特拉交叉进行。 #include <iostream> #include <stdio.h> #include <algorithm> #include <cstring> #include <queue> #include <vector> using namespace ......
航线 道路 ACwing 342

AcWing 836. 合并集合

题面: 一共有 \(n\) 个数,编号是 \(1∼n\),最开始每个数各自在一个集合中。 现在要进行 \(m\) 个操作,操作共有两种: 1、M a b,将编号为 \(a\) 和 \(b\) 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略操作; 2、Q a b,询问编号为 \(a\)  ......
AcWing 836

AcWing 240. 食物链

题面: 有三类动物 \(A,B,C\),\(A\) 吃 \(B\) ,\(B\) 吃 \(C\) ,\(C\) 吃 \(A\) 。 现有 \(N\) 个动物,以 \(1∼N\) 编号,每个动物都是 \(A,B,C\) 中的一种。 用两种说法对这 \(N\) 个动物所构成的食物链关系进行描述: 第一种 ......
食物链 食物 AcWing 240

AcWing 282. 石子合并

题面: 设有 \(N\) 堆石子排成一排,其编号为 \(1,2,3,…,N\),现在要将这 \(N\) 堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和。请找出一种合理的方法,使总的代价最小,输出最小代价。 原题链接:282. 石子合并 - AcWing 乍一看上去很像哈 ......
石子 AcWing 282

Acwing 3240. 压缩编码

本题大意: 使用 01 串为单词编码,要求: 1、编码使用前缀码,即任何一个单词的编码不是另一个单词编码的前缀; 2、编码需要按字典序升序排列,比如 \(C\) 的编码的字典序需要 \(D\) 的编码之前。 请找出一种字典序编码,使得文字经过编码后的长度 \(L\) 最小,输出最小长度。 原题链接: ......
编码 Acwing 3240

AcWing 148. 合并果子

题面: 把所有的果子合成一堆:每一次合并,可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。 达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。 假定每个果子重量都为 \(1\),并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使达达耗费的体力最少,并输出这个最 ......
果子 AcWing 148

AcWing 839. 模拟堆

题解: 维护一个集合,初始时集合为空,支持如下几种操作: ①I x,插入一个数 \(x\); ②PM,输出当前集合中的最小值; ③DM,删除当前集合中的最小值(数据保证此时的最小值唯一); ④D k,删除第 \(k\) 个插入的数; ⑤C k x,修改第 \(k\) 个插入的数,将其变为 \(x\) ......
AcWing 839
共304篇  :1/11页 首页上一页1下一页尾页