- 博客(5)
- 收藏
- 关注
原创 负环——spfa
#include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cstring> using namespace std; const int maxm = 3e3+5, maxn = 2e3+5; const int INF = 0x3f3f3f3f; struct edge{ int v, w, next; }e[maxm<<1];
2021-03-29 01:01:37 89
原创 二叉树——求先序和后序
已知中序,后序求先序 #include<iostream> #include<cstdio> #include<string> #include<sstream> using namespace std; int in[100], post[100]; int n; bool read_list(int *a) { string s; if(!getline(cin, s)) return false; stringstream ss(s);
2021-03-29 00:51:59 227
原创 图论——链式前向星
概述 链式前向星是解决图论的一种方法,一开始接触会有点绕,但是真的好用!首先要有个意识,这个方法的出发点是以边为核心建结构体,这个结构体有一个很妙的变量next,是用来存同一起点的上一条边的编号。除了结构体之外,再建一个head数组,head[i]存的是i作为起点的最后一条边的编号。通过next和head的结合,可以巧妙地进行存边、遍历等操作。 结构体 建结构体时应注意,如果题目给了m条边,应该结构体数组应该2*m个空间(因为双向)。 struct Edge { int v, w, next; }e
2021-03-10 14:59:09 185
原创 背包问题
01背包 int v = {0, 1, 2, 3, 4};//value int w = {0, 1, 2, 3, 4};//weight int func(int k, int c) {//k种物品,背包容量为c for (int i = 0; i <= k; i++) { for (int j = c; j >= w[i]; j--) ans[j] = max(ans[j], ans[j - w[i]] + v[i]); } return ans[c]; } 完全背包
2021-03-02 23:25:35 90
原创 最小生成树——prim
简述 prim和Kruskal都是解决最小生成树的算法,Kruskal主要用于解决顶点多但边稀疏的图,prim主要用于解决边稠密的图。 c++ ll prim(int n) { memset(vis, 0, sizeof(vis)); for(int i = 1; i <= n; i++) { d[i] = e[1][i]; } vis[1] = 1; ll ans = 0; for(int k = 2; k <= n; k++) { int x, m = INF; fo
2021-03-02 00:37:19 120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人