单调队列的操作 单调队列的操作 举例 举例 不妨用一个问题来说明单调队列的作用和操作: 不断地向缓存数组里读入元素,也不时地去掉最老的元素,不定期的询问当前缓存数组里的最小的元素。 最直接的方法:普通队列实现缓存数组。 进队出队都是O(1),一次查询需要遍历当前队列的所有元素,故O(n)。 用堆实现 ...
分类:
其他好文 时间:
2016-04-22 22:18:02
阅读次数:
159
训练赛的题…… 暴力一波明显超时…… 最近刚学stl 感觉是优先队列 但还是太会用…… 以后可以试一下优先队列…… 比赛之后百度了一下 发现是单调队列…… 看起来挺简单的 也算个模版题吧…… 总之思路就是维护一个单调队列…… 有用的的只有C G Q…… 那个长度最多是5的名字只用接着 根本没用…… ...
分类:
其他好文 时间:
2016-04-20 23:15:00
阅读次数:
145
我们从最简单的问题开始: 给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k. 要求: f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0,1,...,N-1 问题的另一种描述就是用一个长度为k的窗在整数数列上移动,求窗里面所包含的数的最 ...
分类:
其他好文 时间:
2016-04-16 23:05:31
阅读次数:
318
题目:http://www.tyvj.cn/p/1305 定义: sum[i]=a[1]+a[2]+...+a[i] 即,sum[i]为序列a的前缀和 dp[i] = sum[i] - min(sum[j]) (i-j<m) 即,dp[i]为以i结尾的满足长度不大于m的最大连续和 则: 答案为 ma ...
分类:
其他好文 时间:
2016-04-05 19:28:16
阅读次数:
231
跟之前做过的51Nod的移数博弈是一样的QAQ 我们考虑每个数的贡献 定义其左边第一个比他小的数的位置为L 定义其右边第一个比他小的数的位置为R 这个可以用排序+链表 或者 单调队列 搞定 那么对于区间长度1->(R-L-1),该数都可以作为最小值出现 我们在R-L-1上打上标记,最后从后往前来更新 ...
分类:
其他好文 时间:
2016-04-04 22:29:53
阅读次数:
137
就按时间顺序写吧 完成度:8/10 3.30 bzoj4385 首先一定是删去连续d个数,然后枚举终点,起点显然有单调性,用单调队列乱搞搞就可以啦 bzoj4378 首先才结论:可行当且仅当把所有大于s的数全变成s然后看所有的数的和大于等于c*s,然后两个树状数组分别维护<=s的和及个数即可,注意需 ...
分类:
其他好文 时间:
2016-04-04 18:11:40
阅读次数:
218
昨天下午想了好久没想出来,果然是很弱,思考能力低下。 用的类似单调队列的思想,维护一个长度为$k+1$的滑块,每次统计下$ans$就可以了 没了 ...
分类:
其他好文 时间:
2016-03-30 08:14:45
阅读次数:
138
一开始看到$\frac{\sum_{}}{\sum_{}}$就想到了01分数规划但最终还是看了题解 二分完后的点分治,只需要维护一个由之前处理过的子树得出的$tb数组$,然后根据遍历每个当前的子树上的结点的深度来确定$tb数组$中的滑块。 因为分数规划要找的是$max$,BFS遍历当前结点的深度越来 ...
分类:
其他好文 时间:
2016-03-29 21:03:52
阅读次数:
219
题目大概是给一棵n个结点边带权的树,记结点i到其他结点最远距离为d[i],问d数组构成的这个序列中满足其中最大值与最小值的差不超过m的连续子序列最长是多长。 各个结点到其他结点的最远距离可以用树形DP解决,HDU2196。 而那个最长的连续子序列可以用单调队列求。。搞了挺久看了解法体会了下。。简单来
分类:
其他好文 时间:
2016-03-23 19:55:00
阅读次数:
194
简单列了一点 1.1 基本数据结构 1. 数组 2. 链表,双向链表 3. 队列,单调队列,双端队列 4. 栈,单调栈 1.2 中级数据结构 1. 堆 2. 并查集与带权并查集 3. hash 表 自然溢出 双hash 1.3 高级数据结构 1. 树状数组 2. 线段树,线段树合并
分类:
其他好文 时间:
2016-03-14 21:46:22
阅读次数:
157