
数据结构
文章平均质量分 64
Tao_oc
加油
展开
-
哈夫曼树(hdu2527-Safe Or Unsafe )
给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 1.Javac++ 一天在看计算机的书籍的时候,看到了一个有趣的东西!每一串字符都可以被编码成一些数字来储存信息,但是不同的编码方式得到的储存空间是不一样的!并且当储存空间大于一定的...原创 2018-12-03 16:02:41 · 178 阅读 · 0 评论 -
k叉哈夫曼树(bzoj-4198荷马史诗)
k叉哈夫曼树在ACM中的最常用的应用就是求合并n个数最小的代价。哈夫曼树也可以是k叉的,只是在构造k叉哈夫曼树时需要先进行一些调整。构造哈夫曼树的思想是每次选k个权重最小的元素来合成一个新的元素,该元素权重为k个元素权重之和。但是当k大于2时,按照这个步骤做下去可能到最后剩下的元素少于k个。解决这个问题的办法是假设已经有了一棵哈夫曼树(且为一棵满k叉树),则可以计算出其叶节点数目为(k-1...原创 2018-12-03 17:37:57 · 540 阅读 · 0 评论 -
权值树状数组&&权值线段树
权值线段树和权值树状数组一般是将权值离散化后做当下标大小建立的可以很方便的处理与数值大小有关的查询权值树状数组很多时候要要+一个二分查找时间复杂度差不多,线段树常数较大,哪怕树状数组+一个logn求逆序数:朴素的逆序数算法:#include<bits/stdc++.h>using namespace std;const int maxn = 1000...原创 2019-01-20 17:16:00 · 702 阅读 · 0 评论 -
树状数组习题
逆序对数:链接:https://ac.nowcoder.com/acm/contest/358/D来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 524288K,其他语言1048576K64bit IO Format: %lld题目描述出题人的妹子送了出题人一个手环,这个手环上有 n 个珠子,每个珠子上有一个数。有一天,出题人和妹子分手了,想把这个...原创 2019-01-20 18:31:30 · 323 阅读 · 0 评论 -
RMQ算法
RMQ(Range Minimum/Maximum Query),即区间最值查询,这是一种在线算法,所谓在线算法,是指用户每次输入一个查询,便马上处理一个查询。RMQ算法一般用较长时间做预处理,时间复杂度为O(nlogn),然后可以在O(1)的时间内处理每次查询。mins[MAXN][c],c要设置的比log2(MAXN)略大#include<bits/stdc++.h>#...原创 2019-04-21 12:56:32 · 398 阅读 · 0 评论 -
单调栈习题
例题:Largest Rectangle in a Histogram题意:找出柱状图内最大矩形块,求最大面积解析:用单调栈处理,找不小于该点的最左端和最右端ans=max(ans,(r-l+1)*h[i]);ac:#include<bits/stdc++.h>#define ll long long#define MAXN 100005using ...原创 2019-04-21 13:04:13 · 483 阅读 · 0 评论 -
小A的柱状图(单调栈+前缀)+最大子矩阵
链接:https://ac.nowcoder.com/acm/contest/549/H来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的柱状图,它的每个矩形下端的宽度可以是不相同的一...原创 2019-04-14 16:32:13 · 388 阅读 · 0 评论 -
E. Two Teams(模拟双端链表,set)
Two Teams题意:n个人站成一排,有两个教练1号和2号,他们轮流选人1号教练先选剩下的人中权值最大的,然后选择他左边的k个,右边的k个(空则不选)再2号,直到所以人都选完解析:用数组模拟双向链表lef[i],i位置左边第一人位置,righ[i],i位置右边第一人位置每次选完人后,修改空白区间左右连续情况(链表)用set来求剩下的最大值ac:#in...原创 2019-04-17 23:48:15 · 333 阅读 · 1 评论 -
STL之heap
堆简介堆并不是STL的组件,但是经常充当着底层实现结构。比如优先级队列(Priority Queue)等等。堆是一种完全二叉树,因此我们可以用数组来存储所有节点。在这里的实现中,采用了一个技巧:将数组中索引为0的元素保留,设置为极大值或者为极小值(依据大顶堆或者小顶堆而定)。那么当某个节点的索引是i时,其左子节点索引为2*i,右子节点索引为2*i+1.父节点是i/2(这里/表示高斯符号,...原创 2018-12-02 22:02:36 · 129 阅读 · 0 评论 -
线段树-位运算
FZU 2105 Digits CountTime Limit:10000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uPracticeDescriptionGiven N integers A={A[0],A[1],...,A[N-1]}. Here we have some operati...转载 2018-12-04 16:44:36 · 437 阅读 · 0 评论 -
线段树
线段树的一般结构:图片转自:https://www.cnblogs.com/TheRoadToTheGold/p/6254255.html1.pushup把子节点的信息向上传递2.pushdown把信息向子节点传递pushdown是在查和改到目标区域才向下传递,也就是这个标记很懒用他他才向下传递,不需要每次都传递到叶子结点,避免重复多次修改叶子结点的懒惰标记,很多时...原创 2018-07-28 19:06:47 · 318 阅读 · 0 评论 -
hdu3308 LCIS(点段数单点更新,区间合并,最长连续上升子序列)
LCIS Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8821 Accepted Submission(s): 3797 Problem Description Given n int...原创 2018-08-03 16:47:55 · 185 阅读 · 0 评论 -
hdu2795(Billboard)
At the entrance to the university, there is a huge rectangular billboard of size h*w (h is its height and w is its width). The board is the place where all possible announcements are posted: nearest p...原创 2018-08-01 08:51:31 · 109 阅读 · 0 评论 -
poj2528-Mayor's posters (线段树+离散化)
The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral posters at all places at their whim. The city council has finally d...原创 2018-08-03 15:26:15 · 130 阅读 · 0 评论 -
单调队列
单调队列Sliding Window题意:Window position Minimum value Maximum value [13-1]-35367 -1 3 1[3-1-3]5367 -3 3 13[-1-35]367 -3 5 ...原创 2019-07-25 20:54:25 · 259 阅读 · 0 评论