数据结构与算法
「已注销」
不忘初心
展开
-
Hanoi塔问题
Hanoi塔问题 问题描述: 假设有 333 个分别命名为 A、B、CA、B、CA、B、C 的塔座,在塔座 AAA 上插有 nnn 个直径大小各不相同,依小到大编号为 1、2,...,n1、2,...,n1、2,...,n 的圆盘。现要求将塔座 AAA 上的 nnn 个圆盘移至塔座 CCC 上,并仍按同样顺序叠排,圆盘移动时必须遵循下列规则: (1)每次只能移动一个圆盘; (2)圆盘可以...原创 2019-04-29 17:35:11 · 1773 阅读 · 0 评论 -
tarjan算法与有向图的连通性
tarjan算法: 将强连通分量缩成一个点,形成一个新的有向图 学习这个算法是通过解一个题目,看题目意思很明朗,看起来很简单,只是看起来-_- 但是现在我学了这个算法,就不怕了。 问题题出:题目链接 有个大佬,啥都会,萌新们纷纷跑来向大佬学习,但是大佬觉得萌新们太多(sha)了,只想教一部分,然后让那些人再去教别的萌新,如果萌新A会教萌新B,萌新B又会教萌新C,这样,大佬只要教会萌新A,萌新...原创 2019-04-29 17:32:37 · 457 阅读 · 0 评论 -
主席树
查询区间第 KKK 小 题目连接:luogu P3834主席树模板题 #include <iostream> #include <algorithm> #include <cstdio> using namespace std; const int maxn = 2e5 + 10; struct node{ int l, r; //左右子节点的编号...原创 2019-04-29 17:31:27 · 293 阅读 · 0 评论 -
字符串模式匹配
KMP算法 计算 nextnextnext 数组 void getnext(){ nextval[0] = -1; int j = -1, i =0; while(i < t.length()){ if(j == -1 || t[i] == t[j]){++i; ++j; nextval[i] = j;} else j = nextval[j]; } } 优化后的 next...原创 2019-04-03 12:44:55 · 335 阅读 · 0 评论 -
最小表示法
题目来源:CH1807Necklace #include <iostream> #include <string> #include <cstring> #include <algorithm> using namespace std; const int maxn = 2000000 + 10; char s1[maxn], s2[maxn]; c...原创 2019-04-11 23:28:19 · 212 阅读 · 0 评论 -
树状数组
单点修改、区间查询 操作1: 格式:1 x k 含义:将第x个数加上k 操作2: 格式:2 x y 含义:输出区间[x,y]内每个数的和 题目来源:LibreOj130 #include<iostream> #include<cstdio> using namespace std; typedef long long ll; const int maxn = 1e6 + 1...原创 2019-04-01 17:17:55 · 171 阅读 · 0 评论 -
线段树
单点增减区间求和 题目来源:hdu1166敌兵布阵 #include<iostream> #include<algorithm> #include<string> #include<cstring> using namespace std; typedef long long ll; const int maxn = 50000 + 10; cons...原创 2019-04-05 19:56:30 · 176 阅读 · 0 评论 -
字典树Trie
注意:在实际问题注重要结合题意判断有没有尾部标记 #include<iostream> #include<cstring> using namespace std; const int maxn = 1000 + 10; bool tail[maxn]; //尾部标记 int trie[maxn][26], tot; void insert(string str){...原创 2019-03-30 09:37:55 · 182 阅读 · 0 评论 -
线性表
顺序表 #include<iostream> using namespace std; const int MAXSIZE = 1000 + 10; typedef struct node{ int* elem; int length; }List; //--------初始化------------ void initList(List &L){ L.elem = ne...原创 2019-04-03 23:52:38 · 193 阅读 · 0 评论 -
平衡术AVL
还差删除功能 #include<iostream> #include <algorithm> using namespace std; struct node{ int w, height; //w为结点权值 node *lchild, *rchild; }; node* newNode(int w){ //生成一个新节点 node* Node = new node...原创 2019-06-07 23:35:07 · 227 阅读 · 0 评论