数据结构
晚霞是你的晚安
一场繁华一场梦,一场欢喜一场空。 (博主已经退役啦。以后有机会的话可能会继续写写东西,问问题的话只能尽量回答了。当然,欢迎指出错误
展开
-
关于堆(heap)
说在前面我第一次接触堆这个东西是在做堆排序的时候。这玩意还不错,难度也不大,可以用的地方很多,值得玩一玩。前置知识:完全二叉树完全二叉树 ,顾名思义是一种二叉树就是说 (假设树根深度为1 )深度为k的二叉树 ,第1至第k-1层的结点都是满的,也就是说 ,如果一颗二叉树满足第i(1<=i<=K-1)层的结点数为2 * i-1 ,0<第K层的结点数<=2 ...原创 2019-04-26 19:30:25 · 179 阅读 · 0 评论 -
【树状数组】Hdu5542 The Battle of Chibi
Description给定一个长度为N的数列A,求A有多少个长度为M的严格递增子序列。1≤M≤N≤1000,序列A中的数的绝对值不超过〖10〗^9。因为答案可能很大,你只需要输出对 〖10〗^9+7 取模后的结果。InputThe first line of the input gives the number of test cases, T(1≤100). T test cas...原创 2019-06-24 19:47:39 · 152 阅读 · 0 评论 -
【Hash】【Poi2012】A Horrible Poem
Description给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节。如果字符串B是字符串A的循环节,那么A可以由B重复若干次得到。Input第一行一个正整数n (n<=500,000),表示S的长度。第二行n个小写英文字母,表示字符串S。第三行一个正整数q (q<=2,000,000),表示询问个数。下面q行每行两个正整数a,...原创 2019-06-26 21:09:11 · 271 阅读 · 0 评论 -
【树状数组】【模板3】区间修改,区间查询
DescriptionYou have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is t...原创 2019-06-26 20:56:12 · 1692 阅读 · 0 评论 -
【树状数组】【模板2】区间修改,单点查询
Description给定数列a[1],a[2],…,a[n],你需要依次进行 q 个操作,操作有两类:1 l r x:给定 l,r,x对于所有 i∈[l,r],将 a[i]加上 x(换言之,将a[l],a[l+1],…,a[r]分别加上 x);2 i:给定 i,求 a[i]的值。Input第一行包含 2 个正整数 n,q表示数列长度和询问个数。保证 1≤n,q≤10^6第二行 n...原创 2019-06-26 20:36:05 · 560 阅读 · 0 评论 -
【树状数组】【归并排序】逆序对
逆序对的定义在一个序列中,若存在i < j,a[i] > a[j],那么a[i] 和 a[j]就是一对逆序对归并排序求逆序对归并排序简单来说就是每次把序列二分,然后合并两个有序序列在合并两个有序序列的过程中,可以用两个指针i,j分别对两个序列进行扫描,每次将a[i] a[j]中较小的那一个放到临时数组中若a[j] < a[i],因为两个序列都是有序序列,那么a...原创 2019-06-22 16:51:54 · 149 阅读 · 0 评论 -
【树状数组】Pku 2325 Stars
DescriptionAstronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that are n...原创 2019-06-22 16:08:40 · 155 阅读 · 0 评论 -
【树状数组】【模板1】单点修改,区间查询
Description给定数列a[1],a[2],…,a[n],你需要依次进行 q个操作,操作有两类:1 i x:给定 i,x将 a[i]加上 x;2 l r:给定 l,r,求a[l]+a[l+1]+?+a[r] 的值)。Input第一行包含 2 个正整数 n,q,表示数列长度和询问个数。保证 1≤n,q≤10^6 。第二行 n 个整数a[1],a[2],…,a[n],表示初...原创 2019-06-22 16:03:48 · 235 阅读 · 0 评论 -
【数据结构】 Sliding Window
题目链接1题目链接2DescriptionAn array of size n ≤ 106 is given to you. There is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbe...原创 2019-04-30 16:42:04 · 189 阅读 · 0 评论 -
关于优先队列
优先队列呢,跟单调队列很像,顾名思义就是一个会自动排序的具有队列特性的数据结构,使用这个数据结构是为了找到队列中优先级最高的元素。ps:优先队列会收下每个输入的元素,而单调队列会舍弃一些不合法的元素以达到优化的目的。使用单调队列是为了让整个队列中的元素保持单调。区别不是特别大,主要根据题目选择。如果按我自己的理解呢,优先队列就是个堆,只不过不需要我们去手写,同时也只具备堆的一部分特性。使用...原创 2019-04-29 22:18:04 · 173 阅读 · 0 评论 -
关于树
树是由一个集合以及在该集合上定义的一种关系构成的,集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构,在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点。树的一些名词节点的度:一个节点含有的子树的个数称为该节点的度;叶节点或终端节点:度为0的节点称为叶节点;非终端节点或分支节点:度不为0的节点;双亲节点或父节点:若一...原创 2019-05-05 10:32:15 · 180 阅读 · 0 评论 -
关于单调栈
单调栈是个什么概念呢?其实说白了它就是个栈这是废话咳,举个栗子:因为2比3小,所以直接砍掉;然后2比1大,所以2就待在1上面。也就是说栈里存着一个单调序列。那么单调栈有啥用呢?我们来看个例题:Description农民John的某 N 头奶牛 (1 <= N <= 80,000) 正在过乱头发节!由于每头牛都意识到自己凌乱不堪的发型,FJ...原创 2019-04-24 20:26:22 · 147 阅读 · 0 评论 -
浅谈LCA(最近公共祖先)
LCA,全称Lowest Common Ancestor,也就是我们常说的最近公共祖先,即在一个有根树中,两个结点公共祖先中最近的那个,非常地通俗易懂。。举个例子:以4,5两个结点为例,他们的公共祖先有1,2,2相对来说要近一些,所以lca(4,5)= 2。怎么实现呢?最笨最粗暴的方式就是:若两结点在同一深度,那么两点同时往上走,直到走到相同的点为止;反之,就先把更深的那个...原创 2019-05-03 20:33:55 · 505 阅读 · 0 评论 -
【数据结构】 士兵训练
题目链接DescriptionN个士兵排成一队进行军事训练,每个士兵的等级用1...K范围内的数来表示,长官每隔1小时就随便说出M个等级a1,a2…am(1≤ai≤K,M个等级中允许有重复),如果这M个等级组成的序列是排成一队的N个士兵等级序列的子序列,那么训练继续;否则训练结束。长官想知道,M至少为多少时,训练才有可能结束。例:士兵等级序列为1 5 3 2 5 1 3 4 4 2...原创 2019-04-26 19:51:52 · 398 阅读 · 0 评论 -
【树状数组】【Usaco2017 Jan】Promotion Counting
DescriptionThe cows have once again tried to form a startup company, failing to remember from past experience that cows make terrible managers!The cows, conveniently numbered 1…N1…N (1≤N≤100,000), o...原创 2019-06-24 20:12:38 · 161 阅读 · 0 评论