最新 最热

ACM算法竞赛——堆优化版dijkstra(模板)

迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用...

2022-05-18
1

ACM算法竞赛——朴素dijkstra算法(模板)

int g[N][N]; // 存储每条边int dist[N]; // 存储1号点到每个点的最短距离bool st[N]; // 存储每个点的最短路是否已经确定// 求1号点到n号点的最短路,如果不存在则返回-1int dijkstra(){ memset(dist, 0x3f, s...

2022-05-16
1

ACM算法竞赛——拓扑排序(模板)

bool topsort(){ int hh = 0, tt = -1; // d[i] 存储点i的入度 for (int i = 1; i <= n; i ++ ) if (!d[i]) q[ ++ tt] = i; while (hh <...

2022-05-16
1

ACM算法竞赛——树与图的宽度优先遍历bfs(模板)

queue<int> q;st[1] = true; // 表示1号点已经被遍历过q.push(1);while (q.size()){ int t = q.front(); q.pop(); for (int i = h[t]; i != -1; i = ne[i]) {...

2022-05-16
1

ACM算法竞赛——树与图的深度优先遍历dfs(模板)

int dfs(int u){ st[u] = true; // st[u] 表示点u已经被遍历过 for (int i = h[u]; i != -1; i = ne[i]) { int j = e[i]; if (!st[j]) dfs(j); }...

2022-05-16
1

ACM算法竞赛——树与图的存储(模板)

树是一种特殊的图,与图的存储方式相同。对于无向图中的边ab,存储两条有向边a->b, b->a。因此我们可以只考虑有向图的存储。(1) 邻接矩阵:ga 存储边a->b(2) 邻接表:// 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]...

2022-05-16
1

ACM算法竞赛——数组模拟双链表(模板)

int idx, e[N], r[N], l[N];//初始化void init(){ r[0] = 1; l[1] = 0; idx = 2;}// 在节点k的右边插入一个数xvoid insert(int k, int x){ e[idx] = x; l[i...

2022-05-16
1

ACM算法竞赛——数组模拟链表、静态链表(模板)

//head头结点 idx表示当前用到了几个数 e存储数值 ne存储后继int head, idx, e[N], ne[N];//初始化void init(){ head = -1; idx = 0;}//头插void add_to_head(int x){ e[idx] =......

2022-05-16
1

ACM算法竞赛——离散化(模板)

vector<int> alls; // 存储所有待离散化的值sort(alls.begin(), alls.end()); // 将所有值排序alls.erase(unique(alls.begin(), alls.end()), alls.end()); // 去掉重复元素// 二分求出x对应的离散化的......

2022-05-14
1

ACM算法竞赛——双指针算法(模板)

for (int i = 0, j = 0; i < n; i ++ ){ while (j < i && check(i, j)) j ++ ; // 具体问题的逻辑}常见问题分类: (1) 对于一个序列,用两个指针维护一段区间 (2) 对于两个序列,维护某种次序,比如归并排序......

2022-05-14
1