
C++笔记
文章平均质量分 55
_TURI
我只是一个初二学生
I'm only a Grade 8 student.
(我也不知道初二是不是Grade 8)
展开
-
SPFA算法
SPFA简介 SPFA (shortest path faster algorithm) 是一个单源最短路径算法,与另一个单源最短路算法dijkstra不同的是(什么你还不知道dijkstra?),SPFA可以用来处理含有负权的图,并且也可以判断图中是否存在负权回路。 实际上,SPFA是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。SPFA的时间复杂度可以达到,k是每一个节点的平均进队次数,可以证明k不大于2。 SPFA算法流程 首先说一下我们都需要哪些东西: 一个储存节原创 2021-11-13 17:16:30 · 1031 阅读 · 0 评论 -
Bellman-Ford算法
Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。 这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该算法由美国数学家理查德•贝尔曼(RichardBellman,动态规划的提出者)和小莱斯特•福特(LesterFord)发明。 适用条件&范围: 单源最短路径(从源点s到其它所有顶点v); 有向图&无向图(无向图可以看...转载 2021-11-13 17:03:38 · 258 阅读 · 0 评论 -
P7912 [CSP-J 2021] 小熊的果篮
#include<bits/stdc++.h> using namespace std; const int maxN = 2e5 + 5; struct Fruit { int type; int Next; int tail; }fruit[maxN]; int main() { //freopen("test.in", "r", stdin); int n; scanf("%d", &n); fruit[0].typ.原创 2021-11-05 22:23:07 · 906 阅读 · 0 评论 -
排序算法演示
#include <iostream> #include <cstdio> #include <algorithm> #include <Windows.h> #include <ctime> using namespace std; void gotoxy(int x, int y) { COORD pos = {x,y}; HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标.原创 2021-10-31 12:54:56 · 99 阅读 · 0 评论 -
/*C++注释规范*/
So—— Let us do a summary. 1. 文件 /* * * * * * * * * * * * * * * * * * * * Copyright (C): 本代码所有版权为xxx所有,任何个人或者组织不得以任何方式复制、转载以挪作他用,否则将构成对xxx的产权知识侵权。 * @file : 文件名 ...原创 2021-09-15 12:56:32 · 302 阅读 · 0 评论 -
背包问题(0/1背包、完全背包)
1.0/1背包 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2至Wn,与之相对应的价值为P1,P2至Pn。01背包是背包问题中最简单的问题。01背包的约束条件是给定几种物品,每种物品有且只有一个,并且有权值和体积两个属性。在01背包问题中,因为每种物品只有一个,对于每个物品只需要考虑选与不选两种情况。如果不选择将其放入背包中,则不需要处理。如果选择将其放入背包中,由于不清楚之前放入的物品占据了多大的空间,需要枚举将这个物品放入背包后可能占据背包空间的所有情况。 状..原创 2021-08-20 15:52:38 · 388 阅读 · 0 评论 -
数据结构(stack&queue)
数据结构(stack&queue) 栈stack 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 (最最)常用的函数: 函数 功能 q.top() 获取原创 2021-08-23 08:33:02 · 121 阅读 · 0 评论 -
C++ stack
一、定义 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 (https://baike.baidu.com/item/%E6%A0%88/12808149#3_3) 二、常用函数 函数 功能 q.top() .原创 2021-08-18 18:55:03 · 268 阅读 · 0 评论 -
背包问题(多重背包&混合背包)
背包问题(多重背包&混合背包) 1.多重背包 多重背包问题的思路跟完全背包的思路非常类似,只是k的取值是有限制的,因为每件物品的数量是有限制的,状态转移方程为: dp[i][v] = max{dp[i - 1][v - k * c[i]] + w[i] | 0 <=k <= n[i]} 其中c[i]是物品的数量,和完全背包的不同支出在于完全背包可以取无数件,而多重背包给定了最多能取的数量。这样也是三个循环,分别是背包容量,物品个数和物品种类。这样如果数量比较多的情况,.原创 2021-08-21 08:47:24 · 360 阅读 · 0 评论 -
广度优先搜索算法bfs
广度优先搜索算法 广度优先搜索算法是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS(Breadth First Search),属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。 过程: 例如下面这张图,蓝色代表无路,白色代表有路,黄色代表已走过,上面的数字代表步数,斜杠即走不了 ..原创 2021-08-22 21:10:43 · 235 阅读 · 0 评论