数据结构与算法
「已注销」
不忘初心
展开
-
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 评论