算法及数据结构
文章平均质量分 91
ykkz000
寒锋藏千年,利刃无人晓。
何日当出鞘,一斩天下知。
展开
-
可持久化数组的非可持久化线段树非可持久化平衡树实现(C++代码)
不使用可持久化线段树且不使用可持久化平衡树实现可持久化数组。原创 2022-07-08 18:11:44 · 457 阅读 · 0 评论 -
A*搜索算法
A* 搜索算法简介算法流程伪代码描述注意事项A* 版k短路算法算法流程伪代码描述例题注意事项简介A* 算法是基于BFS的一种入门级启发式搜索算法,就是将BFS的队列改为基于估价的优先队列,可以快速地找到答案。算法流程伪代码描述//优先队列为小根堆WHILE 优先队列不为空 取出队头并扩展 将扩展节点以估价值+当前值为优先级入队END WHILE注意事项估价函数越接近真实值算法...原创 2019-10-19 16:08:44 · 683 阅读 · 0 评论 -
RSA算法及C++实现
RSA算法实现说明算法的数学基础C++实现数论函数以及结构体定义获取公钥及私钥加密解密说明质数p,q要自己去选取算法的数学基础首先,选取两个质数p,q,令 N=pqN = pqN=pq,L=Φ(N)=(p−1)(q−1)L = \Phi \left ( N \right ) = (p-1)(q-1)L=Φ(N)=(p−1)(q−1);选取E(0<E<L)使得gcd(E,L)=...原创 2019-10-07 11:18:02 · 3545 阅读 · 0 评论 -
数据结构——Treap
数据结构——Treap简介实现节点结构节点信息更新左旋右旋插入删除查询前驱(不大于指定值的最大值)查询后驱(不小于指定值的最小值)查询第K大的值查询排名简介树堆,在数据结构中也称Treap,是指有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树。其基本操作的期望时间复杂度为O(logn)。相对于其他的平衡二叉搜索树,Treap的特点是实现简单,且能基本实现随机平...原创 2019-10-05 17:28:42 · 217 阅读 · 0 评论 -
字符串子串识别——KMP算法与AC自动机
字符串子串识别——KMP算法与AC自动机KMP算法算法简介预处理子串KMP算法主体例题AC自动机算法简介建立失败跳转数组(其实就是在Trie中添加几条边)匹配例题实际应用KMP算法算法简介KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特–莫里斯–普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的...原创 2019-10-05 16:53:46 · 396 阅读 · 1 评论 -
计算机求定积分——自适应辛普森法
自适应辛普森法例题近似解求法——辛普森法(也叫抛物线法)例题洛谷P4526 【模板】自适应辛普森法2这道题应该不能用牛顿莱布尼兹公式求解,因为这个函数没有初等原函数。近似解求法——辛普森法(也叫抛物线法)辛普森法将定积分...原创 2019-10-04 21:14:09 · 1442 阅读 · 0 评论 -
仿照STL实现矩阵matrix
仿照STL实现矩阵matrix#include <bits/stdc++.h>//STL的类都是放在std命名空间中namespace std{ //T必须为数值,或自定义类型但与数值具有同样的函数(包括但不限于重载运算符函数) template<class T/*,class Alloc = allocator*/> //各个STL版本的推荐allocat...原创 2019-09-14 17:26:25 · 478 阅读 · 0 评论 -
仿照STL list
仿照STL list实现insert()pop_*()push_*()erase()remove()迭代器begin()end()front()back()clear()empty()#include <bits/stdc++.h>using namespace std;template <class T>struct My_List_...原创 2019-09-07 17:35:50 · 134 阅读 · 0 评论 -
C++计算器
计算器先上代码#include<bits/stdc++.h>using namespace std;template<typename _Type>class q_stack{ //实现一个栈 #define MAX_SIZE 1024 private: _Type m_stack[MAX_SIZE]; int m_top; public: q_...原创 2019-08-29 21:44:19 · 142 阅读 · 0 评论 -
数据结构——可持久化Trie字典树
数据结构——可持续化Trie字典树如何可持续化流程实现如何可持续化数据结构——Trie字典树可持续化,即能访问曾经的内容,最简单的办法是每次更新直接把以前的内容复制到一个新的地方。然而,这样很浪费内存,因为曾经的节点大部分没必要再复制一遍。更好的办法是每一次都额外创建被更新的节点,而不动原来的节点,并记录每一次更新所产生的新的根节点。自己画的,有点丑流程设当前版本为history...原创 2019-08-24 22:03:44 · 300 阅读 · 0 评论 -
数据结构——Trie字典树
数据结构——Trie字典树结构特点实现结构特点Trie字典树常用于判断前缀。这个数据结构中每个节点表示状态,而状态转移由串实现,即状态为节点,字符为边。这是网上找的图片。实现class Trie{ private: int tot; int ch[1024][26]; //字典树节点,第一维表示节点编号(不用0,0表示没有下一个节点),第二维表示字符,结果为转移的下一个节点...原创 2019-08-24 21:23:37 · 164 阅读 · 0 评论 -
数据结构——线段树
数据结构——线段树简介实现方式实现简介线段树是一种能够区间查询、区间修改的二叉树。实现方式信息学竞赛中,常使用数组下表模拟指针的方式实现。然而在实际情况中,我们并不知道数据量,因此采用动态分配内存,且无法保证堆空间中有正好足够大的连续未分配内存空间,因此节点一个个的申请内存空间。实现...原创 2019-08-19 20:27:05 · 97 阅读 · 0 评论