摘要:
1、试分析数字签名算法与数据加密算法的异同。 (1)数字签名主要提供真实性和完整性,可以防抵赖、防伪造、防假冒、防篡改和可验证; (2)加密算法主要提供保密性,非对称加密算法公钥加密可以提供保密功能; (3)“数字签名+数据加密”则可以提供“真实性+保密性”; “数字签名+数据加密”两种实现方式: 阅读全文
摘要:
动态规划 P1439 【模板】最长公共子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 给出 1,2,…,n 的两个排列 P1 和 P2 ,求它们的最长公共子序列。 输入格式 第一行是一个数 n。 接下来两行,每行为 n 个数,为自然数 1,2,…,n 的一个排列。 阅读全文
摘要:
动态规划 [P1216 USACO1.5][IOI1994]数字三角形 Number Triangles - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的 阅读全文
摘要:
Dijkstra算法 dijstra算法也是基于贪心的思想,用于求一个点到所有其他点的最短距离的算法。 流程: (1)建立两个集合分别表示已经找到最小值的点(已经到达)和没有找到最小值的点(没有到达)。(初始时所有点都没有找到)。再建立一个表示该点到起点的距离的数组。(初始时所有点都没有到起点的路径 阅读全文
摘要:
最短路 floyd算法 floyd是一个基于贪心思维和动态规划思维的计算所有点到所有点的最短距离的算法。 对于每个顶点v,和任一顶点对(i,j),i=j,v=i, v≠j,如果A[i][j]> A[i][v]+ A[v][j],则将 A[i][j] 更新 为 A[i][v] + A[v][j]的值, 阅读全文
摘要:
Kuskual算法 流程 1 将图G看做一个森林,每个顶点为一棵独立的树 2 将所有的边加入集合S,即一开始S = E( 并查集) 3 从S中拿出一条最短的边(u,v),如果(u,v)不在同一棵树内,则连接u,v合并这两棵树,同时将(u,v)加入生成树的边集E' 重复(3)直到所有点属于同一棵树,边 阅读全文
摘要:
最小生成树 ● 最小生成树的定义是给定一个无向图,如果它任意两个顶点都联通并且是一棵树,那么我们就称之为生成树(Spanning Tree)。如果是带权值的无向图,那么权值之和最小的生成树,我们就称之为最小生成树(MST, Minimum Spanning Tree)。 ● 求最小生成树的算法有很多 阅读全文
摘要:
并查集 并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有:求连通子图、求最小生成树的Kruskal算法和求最近公共祖先(LCA)等。 并查集的基本操作 1.初始化init 2.查询find 3.合并unionn //用数 阅读全文
摘要:
差分 假设有一个数列,我们需要对数列中的一个区间加上或减去一个值,直接想到的便是对该区间进行一次循环逐项加减。 但是当请求的操作变得非常多的时候,每次请求都进行一次循环会很容易爆时间,因此我们引入了差分算法. 差分的特点就是在进行多次操作少量查询的时候可以快速得出结果。 一维差分 如果我们想将数列a 阅读全文
摘要:
前缀和 前缀和是指某序列的前n项和,可以把它理解为数学上的数列的前n项和 作用: 一种预处理,求出的前缀和数组可以使得,输出原序列中从第l个数到第r个数和的时间复杂度变成了O(1) 。 一维前缀和 更实际的应用:利用前缀和数组我们可以得到第i项到第j项的和,比如:求原数列第4项到第9项的和。利用 阅读全文