自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 位运算

基础知识1.与&两位全为1,结果才为1,否则为0特殊用法:   (1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。   (2)取一个数中指定位   例:设X =10101110,取X的低4位,用X&00001111 = 0000 1110 即可得到2.或 |只要有一个为1,结果就为1特殊用法:  ...

2018-07-23 22:00:09 195

原创 Noip2013 货车运输

思路       观察题目,经过思考,发现两个点之间最小值最大的路径一定在最大生成树上。 所以我们可以先用kruskal算法求出最大生成树。 之后问题转化为链上最小值。 首先我们可以以1为根建树,之后用倍增算法。dadi,j表示i的2j的父亲,maxi,j表示i到他的2j的父亲路径上所有边的最小权值。 这样我们在求lca的同时可以求出链上最小值。 时间复杂度O(mlogm),空间复杂度O(...

2018-07-21 09:57:52 240

原创 贪心

贪心是一种在每次决策时采取当前意义下最优策略的算法,因此要求整体最优性可以由局部最优性导出。正确性证明的常见手段:    1.微扰(邻项互换)            证明在任意局面下,任何对局部最优策略的改变都会使结果变差    2.范围缩放            ...

2018-07-11 16:18:00 214

原创 分治

整数集合上的二分流程    1.确定左右半段哪个是可行区间,以及mid归属于哪一半段    2.根据分析结果选择两个配套形式之一(只适用于非负数)        ①r=mid,l=mid+1,mid=(l+r)/2        ②l=mid,r=mid-1,mid=(l+r+1)/2当二分区间包含负数时,需要使用更加一般的计算方法“

2018-07-11 13:01:32 253

原创 最小生成树-Prim算法

Prim算法总是维护最小生成树的一部分。最初,Prim算法近仅确定1号节点属于最小生成树。在任意时刻,设已经确定属于最小生成树的节点集合为T,剩余节点集合为S。...

2018-07-09 19:46:00 223

原创 最小生成树-Kruskal算法

定理:任何一棵最小生成树一定包含无向图中权值最小的边(反证法)算法思路Kruskal算法基于上述定理,总是维护无向图的最小生成森林。最初,可认为生成森林由0条边构成,每个节点各自为树。在任意时刻,从剩余边中选出一条权值最小的,并且两个端点不连通(属于两棵不同的树),把该边加入生成森林。节点的连通情况用并查集维护。算法流程1.建立并查集,每个点各自为一个集合2.把所有边按权值升序排列,依次扫描每条边...

2018-07-06 19:26:13 165

原创 Floyed算法-求任意两点间最短路

本质是动态规划,O(n^3)算法思路设D[k,i,j]表示“经过若干个编号不超过k的节点”从i到j的最短路该问题可划分为两个子问题:1.经过编号不超过k-1的节点从i到j  2.从i先到k再到jD[k,i,j]=min(D[k-1,i,j],D[k-1,i,k]+D[k-1,k,j])初值为D[0,i,j]=A[i,j]  //开头定义的邻接矩阵k这一维可以被忽略Tipsk是阶段,必须置于最外层循...

2018-07-04 15:22:20 1149

原创 Bellman-Ford和SPFA算法

定义    给定一张有向图,若对于某一条边(x,y,z),有dist[y]<=dist[x]+z成立,则称该边满足三角形不等式。若所有边均满足三角形不等式,则dist数组就是所求的最短路。基于迭代思想的Bellman-Ford算法1.扫描所有边(x,y,z),若有dist[y]>dist[x]+z,则更新dist[y]2.重复上述步骤直到没有更新操作发生SPFA算法(队列优化的Bell...

2018-07-04 12:06:18 303

原创 堆优化的dijkstra算法

基于贪心思想,只适用于边长为非负数的图算法流程1.初始化的dist[1]=0,其余节点的dist为正无穷2.找出一个未被标记、dist[x]最小的节点x并标记3.扫描x的所有出边(x,y,z),若dist[y]>dist[x]+z,则更新dist[y]4.重复2、3,直到所有节点被标记//by ziwan Catherine//堆优化dijkstra 边长为非负数 //d[n]从起点到n...

2018-07-04 11:21:25 2461

空空如也

空空如也

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

TA关注的人

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