
=======数据结构=======
文章平均质量分 58
空白君有着一把空白键blanKey
即使世界如此残酷,我们仍是努力挣扎着
/*算了,退役了,不挣扎了QWQ*/
展开
-
严蔚敏数据结构习题3.17
3.17 试写一个算法,识别一次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。思路很简单,把&前面部分入栈,然后从&后面部分开始一个一个出栈比较,相同即可。 说个题外话,现在开始我会逐渐写些这个数据结构的习题完整的程序,主要发现网上原创 2015-10-08 19:17:19 · 2127 阅读 · 0 评论 -
hdu 5818 Joint Stacks (优先队列)
题目点我点我点我题目大意:有两个栈A,B,三种操作,push进栈,pop出栈,merge A B则将B内容放进A中重新按照入栈时间形成新栈,并将B清空。解题思路:用优先队列模拟操作。fi表示入栈的值,se为入栈序号。一开始直接模拟TLE了,需要用到滚动数组,因为merge操作有可能将一个栈很大的放到一个空栈里去,或者是一个很小的栈里去,然后不断重复这样操作就会超时了。因原创 2016-08-09 22:25:46 · 458 阅读 · 0 评论 -
CF#367(Div2)D. Vasiliy's Multiset (字典树)
D. Vasiliy's Multisettime limit per test4 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAuthor has gone out of the stories ab原创 2016-08-12 14:50:51 · 393 阅读 · 0 评论 -
HDU 3966 Aragorn's Story (树链剖分 + 线段树)
题目点我点我点我题目大意:给一棵树,并给定各个点权的值,然后有3种操作:I C1 C2 K: 把C1与C2的路径上的所有点权值加上KD C1 C2 K:把C1与C2的路径上的所有点权值减去KQ C:查询节点编号为C的权值解题思路:第一道树链剖分orz,应该是算一道模版题吧……发个树链剖分入门博客原创 2016-09-15 13:36:23 · 486 阅读 · 0 评论 -
BZOJ 1036: [ZJOI2008]树的统计Count (树链剖分 + 线段树)
题目点我点我点我解题思路:树链剖分简单题。/* ***********************************************┆ ┏┓ ┏┓ ┆┆┏┛┻━━━┛┻┓ ┆┆┃ ┃ ┆┆┃ ━ ┃ ┆┆┃ ┳┛ ┗┳ ┃ ┆┆┃ ┃ ┆┆┃ ┻ ┃ ┆┆┗━┓ 马 ┏━┛ ┆┆ ┃原创 2016-09-16 16:54:39 · 320 阅读 · 0 评论 -
CSU 1809 Parenthesis (线段树)【2016年湖南省第十二届大学生计算机程序设计竞赛 - G】
题目点我点我点我1809: ParenthesisTime Limit: 5 Sec Memory Limit: 128 MBSubmit: 513 Solved: 111[Submit][Status][Web Board]DescriptionBobo has a balanced parenthesis sequence P=p1原创 2016-09-04 11:09:30 · 1279 阅读 · 0 评论 -
bzoj3211 花神游历各国 ( 线段树 )
题目点我点我点我3211: 花神游历各国Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 2475 Solved: 921[Submit][Status][Discuss]DescriptionInputOutput每次x=1时,每行一个整数,表示这次旅行的开心度原创 2016-09-05 20:17:24 · 1032 阅读 · 0 评论 -
BZOJ 1798: [Ahoi2009]Seq 维护序列seq (线段树)
题目点我点我点我1798: [Ahoi2009]Seq 维护序列seqTime Limit: 30 Sec Memory Limit: 64 MBSubmit: 5373 Solved: 1897[Submit][Status][Discuss]Description老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。 有长为N的数列,不妨原创 2016-09-06 19:37:34 · 426 阅读 · 0 评论 -
POJ 2777 Count Color (线段树)
题目点我点我点我题目大意:给一个固定长度为L的画板 有两个操作: C A B C:区间AB内涂上颜色C。 P A B:查询区间AB内颜色种类数。解题思路:线段树,用位操作记录颜色种类。/* *******************************原创 2016-09-07 09:11:55 · 298 阅读 · 0 评论 -
HDU5893 List wants to travel (树链剖分 + 线段树) 2016 ACM/ICPC Asia Regional Shenyang Online
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5893题目大意:一棵树,两种操作:改变路径上的颜色,和询问路径上有多少段相邻颜色不同。解题思路:树链剖分,跟BZOJ2243题目几乎一样,只不过这里是边权,把边权转化成点权,边权赋予给深度大的节点。然后用线段树维护。/* *******************原创 2016-09-22 14:19:09 · 474 阅读 · 0 评论 -
Codeforces722 C. Destroying Array (并查集)
题目连接:http://codeforces.com/contest/722/problem/CC. Destroying Arraytime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstand原创 2016-10-02 01:20:23 · 580 阅读 · 0 评论 -
HDU3727 Jewel (主席树)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3727题意:输入n,再输入n个操作,操作有四种 Insert X:插入x到序列末尾 query1 L R X:在当前序列中的[l,r]区间找第x小的数。 query2 X:在当前序列中,输出X是第几小的数。 query3 X:找到当前序列中第X小的数是几。 然后输出的是3原创 2016-10-05 18:17:21 · 419 阅读 · 0 评论 -
POJ2104 K-th Number (主席树)
题目连接:http://poj.org/problem?id=2104题目大意:查找区间[L,R]第k大的数。解题思路:第一道主席树orz……/* ***********************************************┆ ┏┓ ┏┓ ┆┆┏┛┻━━━┛┻┓ ┆┆┃ ┃ ┆┆┃ ━ ┃ ┆┆┃ ┳原创 2016-10-01 14:25:37 · 351 阅读 · 0 评论 -
HDU2852 KiKi's K-Number (主席树)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2852题目大意:3种操作: 0 x ,把x压进容器。 1 x,把x从容器中删除一个。 2 a b,查询容器中所有数比a大的第b小的数。(这里就不吐槽题面了)原创 2016-10-05 22:41:30 · 407 阅读 · 0 评论 -
HDU4251 The Famous ICPC Team Again (主席树)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4251题目大意:求区间[L,R]的中位数。解题思路:主席树。把求中位数看作求第(R-L+1)小的数即可。/* ***********************************************┆ ┏┓ ┏┓ ┆┆┏┛┻━━━┛┻┓ ┆┆┃原创 2016-10-06 09:53:58 · 425 阅读 · 0 评论 -
HDU5919 Sequence II (主席树)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5919题目大意:有长度为n的序列,强制在线询问[l,r] 这段区间中所有不同数出现的第一个位置,按照位置从小到大排完序以后的中间(向上取整)的那个位置是多少?解题思路:把n个元素倒着插进主席树中,把上次出现的同一个值的元素的贡献值-1,新的这个值的贡献值+1,这样就可以把这个元素原创 2016-10-06 12:36:16 · 1426 阅读 · 1 评论 -
HDU4858 项目管理 (分块)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4858题目大意:中文题不解释。解题思路:分块。把所有的节点分成两类,重点(度数>=sqrt(m)),轻点(度数更新操作:对于轻点,我们就直接暴力去加周围的点就好了。对于重点,我们就只加与他相邻的重点以及他自己。查询操作:原创 2016-10-06 21:34:27 · 697 阅读 · 0 评论 -
POJ 2155 (二维树状数组)
题目点我点我点我题目大意:矩阵里面开始全是0,‘C x1,y1,x2,y2’就是将左上角为x1,y1,右下角为x2,y2,的这个矩阵内的数字进行变换,0变1,1变0,;'Q x1 y1',输出a[x1][y1]的值。解题思路:经典的二维树状数组,重叠消元,利用0和1之间变换特性,答案对2取余即可。/* ****************************原创 2016-08-08 16:10:17 · 337 阅读 · 0 评论 -
数据结构 个人总结——名词
1.数据:对客观事物的符号表示,在计算机科学中指所有能输入到计算机中并被计算机程序处理的符号总称。2.数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。3.数据对象:性质相同的数据元素的集合,是数据的一个子集。4.数据结构(data structure)是相互之间存在一种或多种特定关系的数据元素的集合。数据元素之间关系称之为原创 2015-12-21 10:19:45 · 837 阅读 · 1 评论 -
严蔚敏数据结构习题3.31
3.31 假设称正读和反读都相同的字符序列为“回文”,例如,‘abba’和‘abcba’是回文,‘abcde’和‘ababab’则不是回文。试写一个算法判别读入的一个以‘@’为结束符的字符序列是否是“回文”。这题非常简单,分别入栈和入队,然后出栈和出队列比较,相同即可。这种思路我也是灵光一闪想到的。本以为能沾沾自喜,网上搜了一下基本都是这样,orz,只能感叹一句:我是一只小菜鸟~~因为很简单,所以注原创 2015-10-08 19:26:22 · 1797 阅读 · 0 评论 -
数据结构-算术表达式-算符优先法
代码还添加了乘方的优先级,自行参考 一开始我写的只能输入个位数,后来想了好久才解决,主要是在判断是否为运算符后,若不是运算符,别急着入栈,用一个标记数组记着,若下一个字符还不是运算符,则利用strcat函数链接之前标记数组和这一个字符,直到下一个字符是运算符为止,才入栈。至于负数的运算,则要判断是否连续两个都为运算符,且前一个运算符为‘(’后一个运算符为‘-’,若是就加个0入栈即可。#includ原创 2015-10-23 11:45:54 · 4777 阅读 · 4 评论 -
约瑟夫环问题
约瑟夫环问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。试设计一个程序求出出列顺序。这个没什么好说的,利用循环链表,属于基础,耐心看看代原创 2015-10-09 10:13:58 · 1017 阅读 · 0 评论 -
hdu1671 Phone List (字典树)
题目点我点我点我题目意思:判断输入的电话号码中是否有号码是其他号码的前缀,很显然要用到字典树。 要注意每过一个样例就删除数,释放内存,不然内存会boom#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using原创 2015-11-07 12:30:14 · 436 阅读 · 0 评论 -
hdu1251 统计难题(字典树)
题目点我点我点我模版式的字典树,没啥好说的,只是hdu有个巨坑,用G++提交会boom内存,改用C++提交就AC……一开始改了N遍,快抓狂的时候点了一下讨论区,发现都这样or2……还是不懂为神马#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#includ原创 2015-11-07 14:46:13 · 405 阅读 · 0 评论 -
数据结构 文学研究助手(AC自动机)
最近两天都在做AC自动机,刚好数据结构实验可以用,比KMP算法好的地方是文章只要扫描一遍,大大节省了时间,但同时占的内存变大了,简单地说就是,空间换时间。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>#inclu原创 2015-11-09 20:48:13 · 2939 阅读 · 1 评论 -
严蔚敏 数据结构 4.30 最长公共字串
原串为S,第一个字串为S1,从头开始,另一个字串S2与S1向右错位平移1位、2位、3位……与S1匹配,找公共字串,并用maxlen记录已找到的最大长度,懂了这个就很简单了,这题也不难#include <iostream>#include <stdio.h>#include <stdlib.h>#define ok 1#define error 0#define true 1#define原创 2015-10-26 18:34:13 · 700 阅读 · 0 评论 -
严蔚敏 数据结构习题 C语言 4.10~4.13
今天忙了一大堆的事后,脑子突然短路了,各种小问题找了N久,现在感觉要爆肝了,比看到听到某人自称宝宝更不好(°ο°)~@ 晕倒了.. 不多说,上代码~#include <iostream>#include <stdlib.h>#include <math.h>#include <string.h>#include <stdio.h>using namespace std;#define原创 2015-10-25 23:32:13 · 1008 阅读 · 0 评论 -
严蔚敏数据结构习题3.32
试利用循环队列编写求k阶菲波那契序列中前n+1项的算法,要求满足:而,其中max为某个约定的常数。(注意:本题所用循环队列的容量仅为k,则在算法执行结束时,留在循环队列中的元素应是所求k阶菲波那契序列中的最后k项)注意k阶菲波那契序列,一开始有k-1个0,第k个为1,然后第k+1个数为前k个数之和,如此类推~如: 2阶斐波那契数列:0,1,1,2,3,5,8…… 3阶斐波那契数列:0,0,1,2原创 2015-10-13 20:25:55 · 1462 阅读 · 0 评论 -
严蔚敏 数据结构习题6.47
编写按层次顺序(同一层自左至右)遍历二叉树的算法#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <malloc.h>#include <queue>using namespace std;typedef struct tnode{原创 2015-11-25 12:44:16 · 809 阅读 · 0 评论 -
严蔚敏 数据结构习题 6.49
编写算法判定给定的二叉树是否为完全二叉树#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <malloc.h>#include <queue>using namespace std;typedef struct tnode{原创 2015-11-25 12:53:46 · 824 阅读 · 0 评论 -
严蔚敏 数据结构习题 6.41
编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <malloc.h>using namespace std;typedef struct tnode{ int da原创 2015-11-25 12:38:35 · 638 阅读 · 0 评论 -
严蔚敏 数据结构习题 6.52
一个二叉树的繁茂度定义为各层节点数的最大值与树的高度的乘积。是写个算法,求二叉树的繁茂度。其实就是找出结点数最多的那一层,然后结点数乘以树的高度#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <string.h>#include <algorithm>#include <queu原创 2015-11-25 13:02:22 · 1113 阅读 · 0 评论 -
严蔚敏 数据结构习题6.62
对以孩子-兄弟链表表示的树编写计算深度的算法。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <malloc.h>using namespace std;typedef struct tnode{ int data;原创 2015-11-25 13:05:16 · 783 阅读 · 0 评论 -
数据结构 上机测试题 汇总
1、 编写算法,将二个升序链表在原表空间内归并成一个升序链表。#include <stdio.h>#include <string.h>#include <iostream>#include <queue>#include <math.h>#include <stdlib.h>using namespace std;typedef struct linklist{ int原创 2015-12-15 21:31:43 · 7337 阅读 · 3 评论 -
二叉树的遍历之非递归算法
利用栈实现,我这里是为了方便用了c++的stack。定义树的结构体typedef struct BiTNode{ char data; BiTNode *lchild, *rchild; }BiTNode,*BiTree; 先序遍历先将左子树入栈,边入栈遍输出值,左子树入完后入右子树,再重复之前操作。void PreOrder(B原创 2015-12-29 22:15:18 · 555 阅读 · 0 评论 -
HDU5869 Different GCD Subarray Query (离线+树状数组)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5869题目大意:长度n的序列, m个询问区间[L, R], 问区间内的所有子段(要求连续的子序列)的不同GCD值有多少种.解题思路:离线+树状数组。固定R,边预处理L边记录答案。/* ******************************************原创 2016-10-07 16:55:51 · 420 阅读 · 0 评论