自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Feign使用

feign内置了ribbon,配合Eruke或者nacos使用1.导入依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>2.开启feign@EnableFeignClients(basePackages =

2021-12-05 23:45:50 286

原创 prim算法和dijkstra算法的差别

利用二维数组a[][]存放各点之间距离Prim算法struct DIS {//用于记录最短路径int x; //用于在记录最短路径中记录xdouble cost; //用于在记录最短路径中记录cost}dis;dis[i] 中i 代表居民 dis[i].x代表与i居民相连接的x居民用于求最小生成树(n个点相通的最小代价)(利用贪心),dis[]数组的更新策略是Dijkstra算法用于求最短路径(即求起始点到任意点距离最短的情况),dis[]数组保存的是每个点到起始点的最近距离,dis[]

2020-11-04 15:19:54 932

原创 二维数组前缀和

最大子段和的一个升级版,其实思想差不多,都是DP,只不过该题需要先进行一个矩阵压缩,即二维变一维。矩阵压缩:假设有一个矩阵:-5 6 41 -2 62 1 -3如何对它进行压缩呢,其实不难,这边我做一个类比,如果我们把一行看做一个数,这里看做三个数a,b,c,那么将这三个相邻数的进行不同的组合,将这个新的组合视为一个新的数,这就是进行压缩处理,例如a,b,c可以组合为{[a],[ab],[abc],[b],[bc],[c]},而矩阵压缩也类似。先设置一个变量max用于保存压缩后的一维数组的最大

2020-09-13 19:53:26 787

转载 floyed算法

暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。 上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径。这个问题这也被称为“多源最短路径”问题。 现在需要一个数据结构来存储图的信息,我们仍然可以用一个4*4的矩阵(二维数组e)来存储。比如1号城市到2号城市的路程为2,则设e[1]

2020-09-13 19:52:46 129

原创 位运算

异或 ∧:异或的两个小小的性质:k 个相同的数的异或和,当 k为奇数时,结果是这个数本身,否则结果是0。任何数与0的异或值是它本身。常用的位运算:1.与&当两个数在二进制下对应位数上均为 1 时,得到的结果为 10&0=0;  0&1=0;   1&0=0;    1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0

2020-09-13 19:50:03 48

原创 拓扑排序

各项工作是有一定的依赖条件的,也就是说我们在进行工作 X 之前可能需要先进行一些其他的工作。而完成工作 X 所需的时间和所有 X 所依赖的工作完成的时间的最大值有关。(应该还好理解吧)我们可以列出一个简单的 DP 转移方程:f[i] = max{pre}+e[i];f[i] 为从最开始到进行完第 i 项任务所需的时间,pre 为 i 号结点的前驱数组,e[i]为做第 i 件事所需的时间。但是,我们如果直接进行 dfs 遍历,可能会出现一个问题:在我们计算 f[i] 的时候,还存在没有计算过的pr

2020-09-13 16:19:20 100

原创 二维数组差分

考虑这个问题的一维版:一个序列,最开始全是 0 .每次区间加 1 ,最后输出每个数。于是有一种叫做“差分”的奇技淫巧:假设我们现在要给[2,5]这个区间加一。原来的序列是:0 0 0 0 0 0 0 0这时候我们在2上面打 +1 标记, 6 上面打 -1 标记。那么现在的序列是:0 +1 0 0 0 -1 0有什么用呢?从左往右扫描这个数组,记录当前经过的标签之和。这个和就是对应那个数的答案。这样,对于每个区间加操作,只需要O(1) 的时间打上标记。最后扫描输出即可。现在把问题拓展到二维。

2020-09-11 22:18:14 1190

原创 背包九讲 1 01背包问题

01背包问题题目有N件物品和一个容量为V的背包。第iii件物品的费用是w[i],价值是v[i],求将哪些物品装入背包可使价值总和最大基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][j]表示前i件物品恰放入一个容量为j的背包可以获得的最大价值。则其状态转移方程便是:1.不选第i个物品f[i][j] = f[i - 1][j];2.选第i 个物品 f[i−1][j−w\v[i]]+w[i]F[0][0] = 0;For(int i =

2020-09-07 23:54:28 79

原创 并查集

//递归路径压缩int f[1000]; //f[x] 代表x的父节点int fd(int x){ if(f[x]==x){ return x; } else{ return f[x] = fd(f[x]); //进行路径缩短 }}//循环路径压缩int unionsearch(int root){ int son, tmp; son = root; while(root != pre[root]) //寻找最终父节点

2020-09-07 19:49:38 57

原创 归并排序算法实现

归并排序:利用数组排序递归将数组分为单个后,再合并void merge_sort(int *s,int *reg,int l,int r){ if(l>=r) return; else{ int mid = (l+r)/2; int start1 =l; int end1 = mid; int start2 = mid+1; int end2 = r; merge_sort(s, re

2020-08-30 21:27:47 78

原创 快速排序算法实现及优化

利用数组,从右向左遍寻找小于mid的 与空进行交换,再从左到右遍历寻找大于mid的void quick_sort(int *s, int l, int r){ int mid = s[l]; int i = l; int j = r; while(i<j){ while(i<j&&s[j]>=mid){ j--; } if(i<j){ s[

2020-08-30 20:40:33 65

原创 BFS 回溯

利用queuue 实现dfs回溯:创建结构体public class Node { public int x =0; //记录该节点上一个节点的x坐标 public int y=0; //记录该节点上一个节点的y坐标}在遍历的时候保存每个节点的上一个节点,在到达目标节点后,从目标节点开始往前回溯。Node [][]post;//x1 y1表示开始节点坐标,x2 y2代表结束节点坐标int a = post[x2][y2].x;int b =post[x2][y2].y;while(

2020-08-30 19:39:38 202

转载 快速幂

快速幂算法是利用位运算提高幂运算速度的方法直接乘的算法时间复杂度为O(n)级别,快速幂能做到O(logn)假设我们要求ab,那么其实b是可以拆成二进制的,该二进制数第i位的权为2(i-1),例如当b=11时a11=a(20+21+2^3)&和>> &运算通常用于二进制取位操作,例如一个数 & 1 的结果就是取二进制的最末位。还可以判断奇偶x&am...

2020-02-27 22:29:15 85

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除