算法导论
算法导论
I am jack
go ahead
展开
-
AVL树实现细节讲解
大佬的一篇文章平衡二叉树最常见的操作就是左旋和右旋操作的实现以及何时左旋和右旋原创 2021-08-28 20:29:08 · 102 阅读 · 0 评论 -
栈插入与删除的同时可以随时求中位数法——使用multiset平衡二叉树对顶堆实现
本题multiset需要掌握的点: multiset内部实现时平衡二叉树; multiset允许存储重复的元素; multiset删除元素k的方法有两种: 比如multiset s; ①s.erase(k);删除所有的k ②s.erase(s.find(k));删除一个k multiset是排好序的,从小到大排序 multiset删除最后一个元素: auto t = s.end();t--;对顶堆实现我们需要构造两个multiset<int> up,down;其中up原创 2021-08-28 00:06:26 · 253 阅读 · 0 评论 -
C++中lower_bound,upper_bound,binary_search三大函数使用样例讲解
C++中lower_bound函数和upper_bound函数原创 2021-04-19 08:07:26 · 201 阅读 · 0 评论 -
根据二叉树栈形式的中序遍历过程来反推二叉树
6Push 1Push 2Push 3PopPopPush 4PopPopPush 5Push 6PopPopint main(){ scanf("%d",&n); memset(l,-1,sizeof l);memset(r,-1,sizeof r); cin>>last;cin>>id; root = id; p[top++] = root; for(int i=1;i<=2*n-1;i++原创 2021-03-10 10:59:51 · 221 阅读 · 0 评论 -
Dfs正确的求图里面每条边的权重之和和求连通块集合的正确做法和注意点
//起点是s,edges[s]存储的是pair<string,int>,表示s能到达的点以及边权重//下面的做法nodes是存储当前连通块,sum存储的是权重之和//那么这里sum返回值要除以2,因为每条边算了两次//基本原理是:先标记每一个点访问过了并把其加入到nodes存储起来,然后遍历他能到达的//每一个结点加到sum里面去,然后在dfs没有访问过的结点。这样就不重不漏的把每个边算//了两次,这是一种非常保险的算法,可以规避掉很多坑(比如重边与环的情况等)int dfs(str原创 2021-03-04 21:24:45 · 382 阅读 · 2 评论 -
我认为最好的欧几里得算法时间复杂度证明O(logn)!!!
原创 2021-01-30 22:29:29 · 2080 阅读 · 1 评论 -
手动实现next_permutation已经康拓展开讲解
手动实现next_permutation已经康拓展开讲解原始版#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define N 100010using namespace std;int a[N];int main(){ int n,m; scanf("%d %d",&n,&m); for(int i=1;i&原创 2021-01-28 01:08:03 · 125 阅读 · 0 评论 -
C++ 手动开O2优化
C++ 手动开O2优化转载 2021-01-21 17:17:29 · 385 阅读 · 0 评论 -
【树染色】 Color a tree
【树染色】 Color a tree转载 2021-01-18 15:23:32 · 474 阅读 · 0 评论 -
Floating point exception
Floating point exception转载 2021-01-08 19:43:29 · 879 阅读 · 0 评论 -
关于C++中vector和set及结构体使用sort方法进行排序
关于C++中vector和set及结构体使用sort方法进行排序关于C++中vector和set及结构体使用sort方法进行排序原创 2020-12-07 22:31:04 · 317 阅读 · 0 评论 -
C++定义结构体大小根堆的方法
C++定义结构体大小根堆的方法#include <iostream>#include <queue>#include <string>using namespace std;struct Pair{ int id; string data;};bool operator<(Pair p1,Pair p2){ return p1.id<p2.id;}int main() { //大根堆 priori原创 2020-11-26 19:43:20 · 2605 阅读 · 5 评论 -
C++读入二维字符数组的两种方式
1.方式一#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int n;char Map[5][5];int main(){ scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%s",Map[i]); } for(i原创 2020-11-21 21:30:31 · 5848 阅读 · 2 评论 -
二分图之——最大独立集、最大团、最小点覆盖问题
二分图之——最大独立集、最大团、最小点覆盖问题二分图的最小顶点覆盖 最大独立集 最大团转载 2020-11-11 22:32:20 · 752 阅读 · 0 评论 -
C++的常见STL总结
C++的常见STL总结1.vector讲解2.pair讲解3.string讲解4.queue讲解5.priority_queue讲解6.stack讲解7.deque讲解8.set与multiset讲解//常见的4个库,需要记住了#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>int main(){}1.vector讲解//注意下面vector里面原创 2020-11-01 16:31:33 · 227 阅读 · 0 评论 -
计数类dp讲解
import java.util.*;public class Main{ static int power10(int i){ int res = 1; while(i!=0){ res*=10; i--; } return res; } static int get(List<Integer> list,int a,int b){ int.原创 2020-10-26 00:08:28 · 546 阅读 · 0 评论 -
地宫取宝
地宫取宝下图有误:最后输出应该为f[n][m][k][0~13](因为可能存在一个也不取的情形,所以第4维应该包括0)代码:import java.util.*;public class Main{ static int[][] map = new int[60][60]; static int[][][][] f = new int[60][60][15][14]; static int mod = 1000000007; static int n;原创 2020-10-12 20:06:15 · 140 阅读 · 0 评论 -
有向图的拓扑序列
有向图的拓扑序列有向无环图称之为拓扑图。import java.util.*;public class Main{ static int[] h = new int[100010]; static int[] nodes = new int[100010]; static int[] next = new int[100010]; static int index = 1; static int[] d = new int[100010]; stati原创 2020-09-13 18:33:24 · 1552 阅读 · 0 评论 -
树与图的深搜与广搜模板
树与图的深搜与广搜模板一.图的存储二.模板深搜:广搜:import java.util.*;public class Main{ static int[] h = new int[100010]; static int[] nodes = new int[100010]; static int[] next = new int[100010]; static boolean[] vis = new boolean[100010]; static int原创 2020-09-12 13:26:49 · 203 阅读 · 0 评论