数据结构与算法
文章平均质量分 94
Or_me
看山看水独坐,听风听雨高眠,客来客去日日,花开花落年年。
展开
-
HDU 1425 sort(快速排序)
sortTime Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 24231 Accepted Submission(s): 7326Problem Description给你n个整数,请按从大到小的顺序原创 2014-03-12 11:39:58 · 965 阅读 · 0 评论 -
一维树状数组~
树状数组是一个很简单而又值得原创 2014-07-31 09:23:36 · 599 阅读 · 0 评论 -
线段树
线段树(1):点修改#include const int MAXN = 50005;int sum[MAXN << 2];void pushup(int rt){ sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];}void build(int L, int R, int rt){ if (L == R) { scanf("%d", &原创 2015-01-17 16:41:41 · 653 阅读 · 0 评论 -
并查集
在一些有N个元素的几何应用问题中,通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的几何合并,其间反复查找一个元素在哪个集合中。这类题目看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上消耗过大,即使在空间上勉强通过,时间复杂度也是极高的,所以这类问题应该用并查集类解决。 并查集类似一个森林,每个节点均有一个fater[x]来表示他的父原创 2015-04-18 10:47:50 · 434 阅读 · 0 评论 -
Template of ACoCorasickAutomata
LA 4670#include <cstring>#include <cstdio>#include <vector>using namespace std;struct Node{ struct Node *fail; struct Node *next[26]; int tot; int id; Node() { fai原创 2015-07-18 10:26:01 · 392 阅读 · 0 评论 -
HDU-2647-邻接表模板
#include<iostream>#include<cstring>#include<queue>#include<cstdio>using namespace std;#define MAX 10005int n, sum, ans;int into[MAX], head[MAX], money[MAX];struct Reward{ int to; int n原创 2015-08-11 22:28:17 · 612 阅读 · 0 评论 -
后缀数组模板
#include <set>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define maxn 1100000using namespace std;const int MAXN = 500;char s[MAXN];int sa[MAXN];原创 2015-10-01 19:43:38 · 483 阅读 · 0 评论 -
HDU 1394 线段树求逆序数 + 递推逆序数
template <class T>inline bool rd(T &ret) { char c; int sgn; if (c = getchar(), c == EOF) return 0; while (c != '-' && (c < '0' || c > '9')) c = getchar(); sgn = (c == '-') ? -1 : 1;原创 2015-11-04 09:17:10 · 607 阅读 · 0 评论 -
名次树 - 模板
UvaLive 5031#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <cstdlib>using namespace std;const int maxnode = 20005;const int maxw = 60005;const int maxc = 50原创 2015-09-19 10:46:57 · 746 阅读 · 0 评论 -
二叉树学习(二)
二叉树值得思考的一些问题!!1. 求二叉树的高度设二叉树的高度函数为f(xx),则: f(x)={0,Max{f(x−>lchild),f(x−>rchild)}+1,if x = NULLothersf(x) =\begin{cases}0, & \text{if $x$ = NULL} \\Max\{f(x->lchild), f(x->rchild)\} + 1, & \text{原创 2016-01-22 16:20:18 · 800 阅读 · 0 评论 -
二叉树学习(一)
树的基础知识 树的定义: 树包含n(n ≥\ge 0 )个节点,n = 0时称为空树。 在树的结构关系中,有且仅有一个节点没有前趋节点,这个节点称为树的根节点。 除根节点外,树中其他的节点有且仅有一个前趋节点,但可以有很多后继节点。如图,A为根节点。 树的基本术语: 结点的度:每个节点具有的子树的个数(后继节点的个数)称为该节点的度;A的度为3,B原创 2016-01-21 09:57:41 · 2470 阅读 · 0 评论 -
HDU 1276 士兵队列训练问题
士兵队列训练问题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3137 Accepted Submission(s): 1443Problem Description某部队进行新兵队列训练,将新兵从一原创 2014-03-20 14:07:05 · 749 阅读 · 0 评论 -
HDU 1251(字典树)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)原创 2014-04-05 09:54:22 · 744 阅读 · 0 评论 -
用两个栈实现队列
题目:点击打开链接原创 2014-07-05 14:34:42 · 582 阅读 · 0 评论 -
NYOJ 163 || HDU 1671 || HDU 1305
题目链接CLICK HERE原创 2014-07-08 17:29:47 · 542 阅读 · 0 评论 -
堆(heap)
堆是一个完全二叉树(除最后一层外,每一层上的节点数均达到最大值,在最后一层上只缺少右边的几个节点),用一个一位数组来实现。堆中存储的数是局部有序的。堆分为最大堆和最小堆:对于最大堆,任意一个节点的值都大于或等于其任意一个子节点的值,所以根节点一定是堆中的最大值;对于最小堆,任意一个节点的值都小于或等于其任意一个字节的值,所以根节点一定是堆中的最小值。这和优先队列一样,都是将优先级最高的放在队首。堆原创 2015-04-17 08:18:28 · 681 阅读 · 0 评论