数据结构
Jamence
前大厂算法工程师,负责过超大规模分类、检索、聚类等任务
现读博士,发表10+ CCF A/B论文
展开
-
hdu1516(字符串距离+输出路径)
String Distance and Transform ProcessTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 447 Accepted Submission(s): 222Special Judge原创 2017-09-03 19:47:13 · 364 阅读 · 0 评论 -
拓扑排序
拓扑排序算法简介 在计算机科学领域,有向图的拓扑排序或拓扑排序是其顶点的线性排序,使得对于从顶点u到顶点v的每个有向边 uv,u 在排序中都在v之前。 例如,图形的顶点可以表示要执行的任务,并且边缘可以表示一个任务必须在另一个任务之前执行的约束; 在这个应用中,拓扑排序只是一个有效的任务顺序。 如果且仅当图形没有定向循环,即如果它是有向无环图(DAG),则拓扑排序是可能的。 任何...原创 2018-08-14 08:30:09 · 308 阅读 · 0 评论 -
权值线段树
权值线段树简介维护全局的值域信息,每个节点记录的是该值域的值出现的总次数。使用二分的思想(离散化的时候,需要用到)支持查询全局K小值,全局rank,前驱,后继等。单词操作时间复杂度为O(logn)空间复杂度为O(n)相对于平衡树的优势:代码简单,速度快劣势:值域较大时,我们需要离散化,变成离线数据结构(我认为的离线指的是不能更改插入之类的操作,只能进行查询)例题...原创 2018-08-14 08:25:47 · 1053 阅读 · 0 评论 -
树的遍历
树的遍历我们知道树的遍历分为三种情况,前序,中序,后序,层序遍历 我们现在要讨论的问题是得知前序和中序,求得后序和层序遍历 或者得知后序和中序,求得前序和层序遍历得知后序和中序,计算层序#include<iostream>#include <cstdio>#include <set>#include <queue>#i...原创 2018-08-14 08:23:36 · 245 阅读 · 0 评论 -
51nod 1001 数组中和等于K的数对(尺取法)
1001 数组中和等于K的数对基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对。例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0,8),(2,原创 2017-09-12 22:26:27 · 344 阅读 · 0 评论 -
HDU1999
传送门http://acm.hdu.edu.cn/showproblem.php?pid=1999代码如下:#include#define MAX 50 int sum[MAX];int flag[1001]; void init() { int i,j; for(i=1;i<=MAX/2;++i) for(j=i+i;j<MA原创 2017-08-18 16:14:40 · 269 阅读 · 0 评论 -
hdu1597 find the nth digit(二分查找)
find the nth digitTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13674 Accepted Submission(s): 4194Problem Description假设:S原创 2017-08-28 10:17:13 · 347 阅读 · 0 评论 -
51Nod 1019 逆序数
在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。Input第1行:N,N为序列的长度(n <= 50000)第2 - N + 1行:序列中的元素(0 Ou原创 2017-09-14 21:36:04 · 260 阅读 · 0 评论 -
51Nod 1010 只包含因子2 3 5的数
K的因子中只包含2 3 5。满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15。所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数。例如:n = 13,S中 >= 13的最小的数是15,所以输出15。Input第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)第2 - T原创 2017-09-13 20:07:39 · 296 阅读 · 0 评论 -
51Nod 1242 斐波那契数列的第N项
斐波那契数列的定义如下:F(0) = 0F(1) = 1F(n) = F(n - 1) + F(n - 2) (n >= 2)(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ...)给出n,求F(n),由于结果很大,输出F(n) % 1000000009的结果即可。Input原创 2017-09-21 20:29:18 · 252 阅读 · 0 评论 -
好奇的小明(线段树)
题目描述小明对某些事物十分好奇,不过这次他却十分格式化地和你说话:给你t个组,每组有两个数x,y。 一共q次查询,给你一个flag,与l,r当flag=1时,每次查询区间[l,r] 这些组中一个最大的x, 当flag=0时,每次查询区间[l,r] 这些组中一个最大的y。输入格式输入第一行有两个整数t,q分别表示组数,与查询次数。 接下来t行,每行三个原创 2017-09-01 16:07:18 · 318 阅读 · 0 评论 -
UESTC1057 (线段树裸题)
秋实大哥与花Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)Submit Status秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前。所以秋实大哥精心照料了很多花朵。现在所有的花朵排成了一行,每朵花有一个愉悦值。秋实大原创 2017-08-31 20:53:37 · 223 阅读 · 0 评论 -
Character(栈的应用)
Description 给定括号长度N,给出一串括号(只包含小括号),计算出最少的交换(两两交换)次数,使整个括号序列匹配。我们认为一个括号匹配,即对任意一个')',在其左侧都有一个'('与它匹配,且他们形成一一映射关系。FormatInput第一行:整数N,表示括号序列长度第二行:一个字符串,表示括号Output一个整数,表示最少的交换次数Sample...原创 2017-08-29 21:25:59 · 525 阅读 · 2 评论 -
Uva673 Parentheses Balance(栈)
传送门:https://vjudge.net/problem/UVA-673这是栈的一个应用:#include #include #include using namespace std;const int maxn=140;char a[maxn];stacksta;int main(){// freopen("data.in.txt","r",stdin); int原创 2017-08-23 23:09:36 · 349 阅读 · 0 评论 -
51Nod 1183编辑距离
1183 编辑距离基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:sitte原创 2017-09-03 15:48:03 · 251 阅读 · 0 评论 -
线段树
概念线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离散化让空间压缩。 这是百度百科的解释,我理解的还比较浅,不是特别理解 这里有一篇讲的比较好的博客可以推荐一...原创 2018-08-14 08:31:34 · 217 阅读 · 0 评论