数据结构
_duadua
这个作者很懒,什么都没留下…
展开
-
入门经典_Chap06_习题:搜索 数据结构 欧拉回路
前言 A题有一个坑:当输入字符串为空串的时候也需要处理,但是用cin读不进来空串,得改成getline B题~D题是水题题目意思是某国家有V(V≤1000)个城市,每两个城市之间都有一条双向道路直接相连,长度为T。请你找一条最短的道路(起点和终点任意),使得该道路经过E条指定的边。 找出所有的连通块(bfs,dfs都行),对每一个连通块,找出其内度为奇数的顶点的个数(如果此个数小于2则使其为2,此时原创 2017-07-13 00:08:21 · 426 阅读 · 0 评论 -
单调队列 和 单调栈
单调队列定义 有一个队列(双端队列), 队列中的元素满足下面四种状态的任何一种都为单调队列: 单调递增 (如 1 2 3 5 9) 单调不减 (如 1 2 3 3 5) 单调递减 (如 9 5 3 2 1) 单调不增 (如 5 3 3 2 1) 性质 (以单增队列为例) 插入时,需要将尾部大于此数的全部出队。 删除时,根据需要使队首或者队尾的元素出队(所原创 2017-08-06 23:42:49 · 551 阅读 · 0 评论 -
POJ - 2823 Sliding Window: 滑动窗口 单调队列
题目点此跳转思路 题目意思是给你一个数组,让你分别求出所有的区间长度为k的区间的最小值和最大值。 Window position Minimum value Maximum value [1 3 -1] -3 5 3 6 7 -1 3 1 [3 -1 -3] 5 3 6 7 -3 3 1 3 [-1 -3 5] 3 6 7 -原创 2017-08-04 10:14:00 · 583 阅读 · 0 评论 -
HDU - 3415 Max Sum of Max-K-sub-sequence : 单调队列
题目点此跳转思路 题目意思是给你一全环形的数组(头尾相接), 求所有长度不大于k的区间中 元素和 最大 的的区间 及 最大的元素和。 区间的和可以使用前缀和相减求出,设sum[i]为从0到i的前缀和, 区间[i, j]的和即为sum[j] - sum[i-1]; 那么对于每一个区间尾j,我们只要求出它前面i个内最小的sum[i]即可,显然单调队列是可以解决的。 每次区间尾j右移时,将j所在元素入原创 2017-08-04 10:44:44 · 291 阅读 · 0 评论 -
HDU - 3530 Subsequence : 单调队列
题目点此跳转思路 题目意思是给你一个数组, 求一个最长的子区间的长度,此子区间要满足一个条件:在此区间内的最大值与最小值的差要在[m, k]范围内。 使用两个单调队列分别维护区间的最大值和最小值。 注意队首元素出队的条件: 当最大值的队首减最小值的队首不满足题目要求时,要将两者下标小的出队, 才能保证区间的连续性。而出队之前下标也要记录一下,表示此区间开始的地方。代码int n, m, k, a原创 2017-08-04 10:55:49 · 287 阅读 · 0 评论 -
POJ - 3017 Cut the Sequence : 单调队列优化dp
题目点此跳转思路 题目意思是给你一个数组, 现在让你将整个数组划分为几个子区间,并且要保证每个子区间的元素和不大于M, 求 每个子区间的最大值 的和 的最小值。 这是一道dp题, 单调队列的一个很大的应用就是可以优化某一类dp。 我们先将它当作一个纯dp题去写状态转移方程,之后再考虑使用单调队列优化。 设 f(i) 为数组A[1, , i]满足条件的每个子区间的最大值的和 的最小值, 则要求的结原创 2017-08-04 15:03:45 · 510 阅读 · 1 评论 -
HDU - 1506 Largest Rectangle in a Histogram: 单调栈入门题
题目点此跳转思路 题目意思是有一个由许多矩形组成的一个图形(下底对齐), 求这个图形里能找到的最大矩形的面积, 输入的是各个矩形的高度。 例如下图 很显然,这一题就是要求对于每一个矩形而言,它往左或右最多的比他高的矩形的个数, 也就是说,对于输入的那个数组,我们只要求出每一个元素能往左右延伸到什么地方即可,延伸的定义是不比它小的才行。 使用单调栈是解决这个问题的一个很好的办法。 我们维护一个原创 2017-08-06 22:14:25 · 395 阅读 · 0 评论