自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (2)
  • 收藏
  • 关注

原创 【求助帖】| 树状数组求逆序对

#include <bits/stdc++.h>#define read(x) scanf("%d",&x)#define lowbit(x) ((x)&(-x))using namespace std;typedef long long ll;const int N=1e5+10;struct node { int h,idx; bool operator < (const node &b) const { if .

2021-03-22 10:19:07 215

原创 【数论】| 求约数、求约数个数、求约数之和、最大公约数、最小公倍数

1. 试除法求约数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sXZ6PTLs-1615815096189)(约数_images/image-20210315165956431.png)]#include <iostream>#include <vector>#include <algorithm>#define read(x) scanf("%d",&x)using namespace std;vector&l

2021-03-15 21:32:33 699

原创 【数论】| 判定质数、分解质因数、埃氏筛、线性筛

1. 试除法判定质数bool isPrime(int x){ if (x<2) return false; for (int i=2;i<=x/i;i++) if (x%i==0) return false; return true; }2. 分解质因数void divide(int x){ for (int i=2;i<=x/i;i++) { //找当前的x的大于等于i的质数 if (x%i==0)

2021-03-13 17:04:02 307

原创 【模拟】| 40. 顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。样例输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]代码实现class Solution {private: vector<int> ans; int r,c; public: vector<int> printMatrix(vector&l

2021-03-11 21:03:51 121

原创 【并查集】| AcWing 240. 食物链

240. 食物链动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。现有 N 个动物,以 1∼N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是 1 X Y,表示 X 和 Y 是同类。第二种说法是 2 X Y,表示 X 吃 Y。此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真的,有的是假的。当一句话满足下

2021-03-10 09:32:46 124

原创 【记忆化搜索】| AcWing 901. 滑雪

901. 滑雪题目描述给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9在给定矩阵中,一条可行的

2021-03-08 17:52:09 292

原创 【树形dp】| AcWing 算法基础班试题总结

285. 没有上司的舞会题目描述某公司有N名职员,编号为1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 Hi 给出,其中 1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。输入格式第一行一个整数N。接下来N行,第 i 行表示 i 号职员的快乐指数Hi。接下来N-1行,每行输入一对整数L, K,表示K是L的直

2021-03-08 16:35:57 132

原创 【数位dp】| AcWing 算法基础班试题总结

1081. 度的数量题目描述求给定区间 [X,Y] 中满足下列条件的整数个数:这个数恰好等于 K 个互不相等的 B 的整数次幂之和。输入格式第一行包含两个整数 X 和 Y,接下来两行包含整数 K 和 B。输出格式只包含一个整数,表示满足条件的数的个数。数据范围1≤X≤Y≤231−1,1≤K≤20,2≤B≤10输入样例:15 2022输出样例:3Hint:X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意:17=24+20 ;18=24+21 ;2

2021-03-07 18:50:25 323

原创 【状压dp】| 最短哈密顿距离

状压其实是一种很暴力的算法,因为他需要遍历每个状态,所以将会出现2n ,从0到2n -1 的情况数量,不过这并不代表这种方法不适用:一些题目可以依照题意,排除不合法的方案,使一行的总方案数大大减少从而减少枚举。状态压缩类动态规划,状压dp一般会有明显的数据范围特征,即数据的行数和列数n,m一般都在20以内。考虑到每行每列之间都有互相的约束关系。因此,我们可以用行和列描述2n种状态。用一个新的方法表示行和列的状态:数字。考虑任何一个十进制数都可以转化成一个二进制数,而一行的状态就可以表示成这样——例如:1

2021-03-07 15:14:07 656 1

原创 【状压dp】| AcWing 算法基础班试题总结

291. 蒙德里安的梦想题目描述求把N×M的棋盘分割成若干个1×2的的长方形,有多少种方案。例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数N和M。当输入用例N=0,M=0时,表示输入终止,且该用例无需处理。输出格式每个测试用例输出一个结果,每个结果占一行。数据范围1≤N,M≤11输入样例:1 21 31 42 22 32 42 114 110 0输出样例:

2021-03-06 19:22:13 311

原创 【计数dp】| AcWing 算法基础班试题总结

900. 整数划分题目描述一个正整数n可以表示成若干个正整数之和,形如:n=n1+n2+…+nk,其中n1≥n2≥…≥nk,k≥1。我们将这样的一种表示称为正整数n的一种划分。(无序、可重复)现在给定一个正整数n,请你求出n共有多少种不同的划分方法。输入格式共一行,包含一个整数n。输出格式共一行,包含一个整数,表示总划分数量。由于答案可能很大,输出结果请对109+7取模。数据范围1≤n≤1000输入样例:5输出样例:7完全背包思想思路:把整数1,2,3, … n分别

2021-03-06 13:10:47 235

原创 【区间dp、记忆化搜索】| AcWing 算法基础班试题总结

282. 石子合并题目描述设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。问题是:找出一种合理的方法,使总的代价最小,输出最小代价。输入格式第一行一个数N表示石子的堆数N。第二行N个数,表示每堆石子的质量(均不超过1000)。输出格式输出一个整数,表示最小代价。数

2021-03-06 10:44:02 224

原创 【线性dp】| AcWing 算法基础班试题总结(二)

897. 最长公共子序列题目描述给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。输入格式第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N,M≤1000输入样例:4 5acbdabedc输出样例:3...

2021-03-05 19:31:53 170

原创 【线性dp】| AcWing 算法基础班试题总结(一)

898. 数字三角形题目描述给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8 1 0 2 7 4 44 5 2 6 5输入格式第一行包含整数n,表示数字三角形的层数。接下来n行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。输出格式输出一个整数,表示最大的路径数字和。

2021-03-04 20:50:09 300 1

原创 背包问题——7. 混合背包

混合背包问题题目描述有 N 种物品和一个容量是 V 的背包。物品一共有三类,每种体积是 vi,价值是 wi。第一类物品只能用1次(01背包);第二类物品可以用无限次(完全背包);第三类物品最多只能用 si 次(多重背包);求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。s

2021-03-01 23:01:37 1302

原创 背包问题——4. 多重背包

多重背包题目描述有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围Case1: 0<N,V≤100 ,0<vi,wi

2021-03-01 12:00:43 280

原创 背包问题——3. 完全背包

完全背包问题题目描述有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样

2021-02-28 19:46:48 3105 3

原创 背包问题——2. 简单01背包

01背包题目描述有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例

2021-02-28 16:47:16 270

原创 心得——字符串哈希二次学习

如果手写哈希的话,主键key只能是int类型,如果主键是字符串类型,值是int类型的映射时,就不能手写哈希了,就要使用unordered_map了。字符串哈希将一个字符串转化成一个整数,并保证字符串不同,其哈希值不同。类似于整数的二进制数表示的思想一样。因此将一个字符串看成一个R进制数,对于一个字符串:S=s1s2…sn,如果是全都是小写字母,可以将每个字符转换成idx(si)=si-'a'+1,如果有大写,有小写,有数字不方便处理,可以直接用字符的ASCII码表示。对字符的再次转换编码要注意不能

2021-02-28 02:19:23 215

原创 【Trie树】| AcWing 143. 最大异或对

题目描述在给定的N个整数A1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少?输入格式第一行输入一个整数N。第二行输入N个整数A1~AN。输出格式输出一个整数表示答案。数据范围1≤N≤105,0≤Ai<231输入样例:31 2 3输出样例:3思路分析0≤Ai<231,即最大值是231-1,即31个1,所以整数的二进制表示最大是31位,也就是说可以变成长度为31位的二进制字符串,所以进行异或运算的结果最大是1111……11 (31个1)

2021-02-27 21:15:38 238

原创 LeetCode 208. 实现 Trie (前缀树)

题目描述实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith("app"); // 返回 truetrie.insert("app"); trie.search("app

2021-02-27 19:29:55 92 1

原创 Trie树初步学习

什么是Trie树Trie树有很多名字,字典树,前缀树。Trie树主要用来高效存储字符串或者二进制数,可以避免重复元素的存储,同时提高查找效率。我们以存储26个小写字母为例:由于有26个字母,所以从根节结点往下开始,每个父结点都最多有26个孩子结点。1. 插入操作Trie树的创建是从根节点开始,假设我们要插入字符串”in”。我们一开始位于根,也就是0号节点,我们用P=0表示。我们先看P是不是有一条标识着 字符i 的连向子节点的边。发现没有这条边,于是我们就新建一个节点,也就是1号节点,并且

2021-02-27 16:39:06 225

原创 【广搜、哈希】| LeetCode 127. 单词接龙

题目描述字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列:序列中第一个单词是 beginWord 。序列中最后一个单词是 endWord 。每次转换只能改变一个字母。转换过程中的中间单词必须是字典 wordList 中的单词。给你两个单词 beginWord 和 endWord 和一个字典 wordList ,找到从 beginWord 到 endWord 的 最短转换序列 中的 单词数目 。如果不存在这样的转换序列,返回 0。

2021-02-27 11:01:47 146 1

原创 【哈希、双指针】| AcWing 1532. 找硬币

题目描述伊娃喜欢从整个宇宙中收集硬币。有一天,她去了一家宇宙购物中心购物,结账时可以使用各种硬币付款。但是,有一个特殊的付款要求:每张帐单,她只能使用恰好两个硬币来准确的支付消费金额。给定她拥有的所有硬币的面额,请你帮她确定对于给定的金额,她是否可以找到两个硬币来支付。输入格式第一行包含两个整数 N 和 M,分别表示硬币数量以及需要支付的金额。第二行包含 N 个整数,表示每个硬币的面额。输出格式输出一行,包含两个整数 V1,V2,表示所选的两个硬币的面额,使得 V1≤V2 并且 V1+V2

2021-02-26 17:37:09 105

原创 unordered_map、unordered_set代替手写哈希

unordered_map需要头文件#include <unordered_map>unordered_set需要头文件#include <unordered_set>二者都是基于哈希实现的,无序,因此增删改查的时间复杂度是 O(1),比map和set快,它们是基于平衡二叉树(红黑树)实现的,动态维护有序序列,时间复杂度 O(logn)。关于如何手写哈希表请参考:哈希表、字符串哈希初步学习unordered_map介绍unordered_map<key,value&g

2021-02-26 16:31:33 494

原创 二分图的匹配——匈牙利算法

什么是匹配匹配:在图论中,一个「匹配」是一个边的集合,其中任意两条边都没有公共顶点。最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配。二分图的匹配:给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。二分图的最大匹配:所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数即为最大匹配数。匈牙利算法前面的染色法是判断一个图是否是二分图;匈牙利算法就是在是二分图的基础上,求二分图的最大匹配的算法。二分图

2021-02-25 22:43:30 723 1

原创 二分图 | 染色法判定二分图

二分图二分图,又叫二部图,将所有点分成两个集合,使得所有边只出现在集合之间的点之间,而集合内部的点之间没有边。当一个图只有n个顶点,没有边时,只能分成一个集合,也是二分图二分图,当且仅当图中没有奇数环。 所以,只要图中没有环 或者 只有偶数环,一定是二分图。从而推出,树一定是二分图。二分图不一定是连通图,也可能是非连通图。染色法...

2021-02-25 16:01:17 1225

原创 图论总结——最小生成树算法:prim算法、kruskal算法

什么是最小生成树?一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。因此,只有连通图才存在最小生成树,因为所有顶点都可达,如果是非连通图,一定不存在最小生成树。求最短路径时的图一般是有向图求最小生成树时的图一般是无向图最小生成树的应用例如要在n个城市之间铺设光缆,主要目标是要使这 n 个城市的任意两个之间都可以通信,但铺设光缆的费用很高,且各个城市之间铺设光缆的费用不同,因此另一个目标是要使铺设光缆的总费用最低。这就需要找到

2021-02-25 15:44:52 340

原创 最小生成树模板——kruskal算法

kruskal算法kruskal算法主要解决稀疏图,代替堆优化的dijkstra算法。假设 WN=(V,{E}) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含 n 个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有 n 棵树的一个森林。之后,从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图,也就是说,将这两个顶点分别所在的两棵树合成一棵树;反之,若该条边的两个顶点已落在同一棵树上

2021-02-25 14:27:23 523

原创 最小生成树模板——Prim算法

Prim算法1).输入:一个加权连通图,其中顶点集合为V,边集合为E;2).初始化:Vnew= {x},其中x为集合V中的任一节点(起始点),Enew= {},为空;3).重复下列操作,直到Vnew= V:在集合E中选取权值最小的边<u, v>,其中u为集合Vnew中的元素,而v不在Vnew集合当中,并且v∈V(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一);将v加入集合Vnew中,将<u, v>边加入集合Enew中;4).输出:使用集合Vnew

2021-02-24 22:26:17 733

原创 图论总结——最短路径四大算法:dijkstra算法、Bellman-Ford算法、spfa算法、floyd算法

求最短路径的前提都是图中不存在负权回路。对于无权图,可以使用BFS算法求最短路。对于有权图,dijkstra算法Bellman-Ford算法spfa算法Floyd算法

2021-02-24 13:03:20 623

原创 最短路径模板——Floyd算法

Floyd算法基于动态规划的思想实现:f[i, j, k]表示从 i 走到 j 的路径上除起点 i 和 终点 j 外只经过 1 到 k号点之间的点的所有路径的最短距离。这中间可能经过一个点,也可能经过多个点,也可能不经过其中任何一个点。有动态转移方程:f[i, j, k] = min(f[i, j, k - 1), f[i, k, k - 1] + f[k, j, k - 1]采用 邻接矩阵f 存储,初始化存储的边的信息就是f[i,j,0]的状态,就是i->j是直达的,其中不经过任何顶点。

2021-02-24 12:09:51 838

原创 图论——spfa算法判断负权回路

在最短路径模板——spfa算法中的模板只适用于不存在负权回路的图,否则就会死循环。接下来做一下改动,实现通过spfa算法判断是否存在负环。求负环的常用方法,基于SPFA:统计每个点入队的次数,如果某个点入队n次,则说明存在负环;统计当前每个点的最短路中所包含的边数即路径长度,如果某点的最短路所包含的边数大于等于n,则说明存在环。我们下面以方法2为思路解决问题:   n个点的路径长度最大为n-1,所以当以某个顶点结尾的最短路径长度>=n时,就说明存在回路。那么我们是以哪个顶点开始的

2021-02-23 20:54:50 1248

原创 最短路径模板——spfa算法

spfa算法spfa算法就是队列优化的Bellman-Ford算法Bellman-Ford算法中,根据松弛函数dis[b]=min(dis[b],dis[a]+w),每次都扫描M条边,扫描N-1次,时间复杂度是O(MN)由于每条边也可能存在使用多次的情况,所以也不能根据边的使用次数进行优化。因此我们更改优化思路,根据松弛函数dis[b]=min(dis[b],dis[a]+w),当我们每次要修改dis[b]时,必然是因为dis[a]发生了变化,然后再调用边(a,b),即仅仅因为dis[a]修改才会涉及

2021-02-23 17:02:23 1177

原创 最短路径模板——Bellman-Ford算法

Bellman-Ford算法dijkstra算法的主要思想是每次找到距离起点s最近的点将其加入已确定的集合,不断更新其它点到起点的距离,每次找到1个点,更新1次,因此只需要n次即可确定所有的起点到所有点的最短距离。松弛函数对边集合 E 中任意边(x,y),以 w(u,v) 表示顶点 u 出发到顶点 v 的边的权值,以 dis[v] 表示当前从起点 s 到顶点 v 的路径权值。若存在边 (u,v),使得:dis[v] > dis[u]+w(u,v),则更新 d[v] 值:d[v]=d[u]+w

2021-02-22 18:21:59 949

原创 图论——拓扑排序模板

拓扑排序拓扑排序是针对有向无环图 (AOV网)的。主要做法是:每次找到入度为0的结点,然后从中任选一个,然后去掉与之相连的边,即将相邻顶点的入度减1,重复此操作,直到统计完n个结点为止。当存在环时,环环相扣,当执行到某一步时,就不存在入度为0的结点了,也就不存在拓扑序列了。因此,通过检测一个图是否有拓扑序列,可以判断它是否存在环。算法流程:用队列来执行 ,初始化将所有入度为0的顶点入队。主要由以下两步循环执行,直到不存在入度为 0 的顶点为止:选择一个入度为 0 的顶点,并将它输出;删

2021-02-21 19:51:06 188

原创 最短路径模板——dijkstra算法

稠密图稠密图采用邻接矩阵存储:g[i][j]=x,表示i->j的距离为x题目描述给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出-1。数据范围1≤n≤500,1≤m≤105,图中涉及边长均不超

2021-02-11 11:36:42 1855

原创 用数组模拟栈、队列、循环队列

数组模拟堆tt表示栈顶,习惯从下标1开始存储,tt=0表示栈空。tt表示栈内元素个数。int stk[N], tt = 0;向栈顶插入一个数stk[ ++ tt] = x;从栈顶弹出一个数tt -- ;取栈顶的值stk[tt];判断栈是否为空if (tt > 0){ 非空 }数组模拟队列hh 表示队头,tt表示队尾,队尾插入,队头取出。int q[N], hh = 0, tt = -1;习惯从下标0开存储,hh>tt表示队列空,hh==tt 时说明队列中只有一个元素

2021-02-10 14:58:14 140

原创 用数组模拟堆——手写大根堆、小根堆模板

了解什么是堆?小根堆排序模板大根堆排序实现的五个基本功能:插入一个数:heap[++sz]=x; up(sz); 尾部插入求集合中的最大值:heap[1]删除最大值:heap[1]=heap[sz]; sz– – ; down(1); 尾部代替头部删除任一个结点为k的元素:heap[k]=heap[sz]; sz– – ; down(k); up(k);修改任一个结点为k的元素:heap[k]=x; down(k); up(k);还有一个初始化功能,可直接依靠down函数#incl

2021-02-09 15:32:12 441

原创 哈希表、字符串哈希初步学习

一、哈希表哈希表h[ ]的存储结构是为了实现O(1)的复杂度查找一个数。通过哈希函数f(x)完成映射,由关键字key得到哈希表中的下标idx:idx=f(key);然后进行存储:h[idx]=key;构建哈希函数: 除留取余法f(x) = x mod p 将x映射到 0到p-1 之间的数。其中:p要取成一个质数,而且要离2的整次幂尽可能远。解决冲突问题:当f(key1)==f(key2)时拉链法,一个h[i]处连一个单链表开放寻址法,冲突则往后顺移,因此 h 的长度一般定义为规

2021-02-09 14:55:50 509

jQuery文件和API帮助文档

jQuery文件和API帮助文档

2021-01-30

拟合-中国的人口政策.docx

全国大学生数学建模竞赛是全国高校规模最大的课外科技活动之一。该竞赛每年9月(一般在上旬某个周末的星期五至下周星期一共3天,72小时)举行,竞赛面向全国大专院校的学生,不分专业(但竞赛分本科、专科两组,本科组竞赛所有大学生均可参加,专科组竞赛只有专科生(包括高职、高专生)可以参加)。同学可以向该校教务部门咨询,如有必要也可直接与全国竞赛组委会或各省(市、自治区)赛区组委会联系。

2020-08-15

空空如也

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

TA关注的人

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