![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单调队列
ssllyr
锦瑟无端五十弦,一弦一柱思华年。
展开
-
最大连续子序列和【单调队列】
单调队列原创 2022-08-24 10:08:42 · 180 阅读 · 0 评论 -
【51nod 1275】连续子段的差异【单调队列】
分析两个单调队列,一个处理最大值,一个处理最小值,然后依次比较,哪个小就删哪边。然后判断队首的差异是否合法,累加即可上代码#include<iostream>#include<cstdio>#include<algorithm>#include<queue>using namespace std;int n,k,a[100011],t,ans;deque<int> q1;deque<int> q2;int..原创 2022-01-16 21:29:33 · 142 阅读 · 0 评论 -
【SSL2884】假期【单调队列】
分析看到区间的问题首先肯定是想到求前缀和,[l,r][l,r][l,r]的和即为sum[r]−sum[l−1]sum[r] - sum[l - 1]sum[r]−sum[l−1](这里视sum[0]=0sum[0] = 0sum[0]=0)。若要使[l,r][l,r][l,r]区间的值最大,则sum[l−1]sum[l - 1]sum[l−1]需最小,才可使得sum[r]−sum[l−1]sum[r] - sum[l - 1]sum[r]−sum[l−1]最小,当iii右移一位到i+1i+1i+1,因..原创 2022-01-16 21:25:31 · 85 阅读 · 0 评论 -
【洛谷P1886】【8.24模拟赛T2.1326】滑动窗口window【单调队列】
题目链接:https://www.luogu.com.cn/problem/P1886,https://gmoj.net/senior/#main/show/1326分析单调队列模板题。。。严重怀疑纪中没题但也好今天差点AK分别维护单调增和单调减。。区间过了就从头出队,进来点比之前的大(小)就从尾出队。上代码#include<iostream>#include<cstdio>#include<algorithm>using namespace ...原创 2021-08-24 16:50:19 · 103 阅读 · 0 评论 -
【ssl2521】数数【单调队列】【前缀和】
分析这题类似于假期那题,都是前缀和+单调队列处理,利用前缀和O(1)算出区间和。其他的就是常规单调队列处理,要判断区间是否超过k的范围。上代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;long long n,k,a[100001],q[100001],ans; int main(){ cin&.原创 2020-08-11 21:27:34 · 99 阅读 · 0 评论 -
【HDU3530】Subsequence【双单调队列】
题目大意给出一个数字序列,求出最长的那一段数,这段数满足:最大值和最小值的差在给定的两个值之间,求出最长的长度。样例&原题(英文题面)分析这题有一个区间最大值,一个区间最小值。所以我设了两个单调队列来控制,一个是递增序列,一个是递减序列。因为两个序列中队首的分别是区间里最大和最小的数,所以就由队首来做判断差值。如果差值在规定范围内,那就设max打擂台。如果超过了规定范围(两个数相差过多),那就随便选其中一个的队首值出队。上代码#include<iostream>#incl原创 2020-08-11 19:06:56 · 95 阅读 · 0 评论 -
【HDU2191】多重背包【DP多重背包】【单调队列优化】
题目描述PS:鸡汤题干更好的题目阅读体验分析这题裸的多重背包会TLE掉。下面就来介绍一下用单调队列来实现的时间复杂度为O(nm)的多重背包。先来回顾裸的多重背包:For (int i=1;i<=n;i++) For (int j=m;j>=0;j--) For (int k=1;k<=s[i]&&k*w[i]>=j;k++) F[j]=min(f[j],f[j-k*w[i]]+v[i]*k);前面两个循环是原创 2020-08-11 09:56:41 · 139 阅读 · 0 评论 -
【ssl2884】假期【单调队列】【前缀和】
Description经过几个月辛勤的工作,FJ决定让奶牛放假。假期可以在1…N天内任意选择一段(需要连续),每一天都有一个享受指数W。但是奶牛的要求非常苛刻,假期不能短于P天,否则奶牛不能得到足够的休息;假期也不能超过Q天,否则奶牛会玩的腻烦。FJ想知道奶牛们能获得的最大享受指数。Input第一行:N,P,Q.第二行:N个数字,中间用一个空格隔开,每个数都在longint范围内。Output一个整数,奶牛们能获得的最大享受指数。Sample Input5 2 4 -9原创 2020-08-10 20:19:23 · 181 阅读 · 1 评论 -
【ssl2883】烽火传递【单调队列优化】【DP】
Description烽火台又称烽燧,是重要的军事防御设施,一般建在险要或交通要道上。一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息;夜晚燃烧干柴,以火光传递军情,在某两座城市之间有 n 个烽火台,每个烽火台发出信号都有一定代价。为了使情报准确地传递,在连续 m 个烽火台中至少要有一个发出信号。请计算总共最少花费多少代价,才能使敌军来袭之时,情报能在这两座城市之间准确传递。Input第一行:两个整数 N,M。其中N表示烽火台的个数, M 表示在连续 m 个烽火台中至少要有一个发出信号。接下来 N 行,原创 2020-08-10 16:20:47 · 158 阅读 · 0 评论 -
【洛谷P1886】滑动窗口【单调队列模板】
原题和样例见洛谷:滑动窗口分析这题是单调队列的模板题队列就是先进先出的数据结构。队列的进出方式类似于我们排队打饭,来排队的人从队尾进入,打完饭的人从前面出来。有头指针和尾指针控制。队列的单调性就是一个队列保持递增或者递减。举个例子:假如你在饭堂打饭时,有个人人高马大,急匆匆跑过来,看排了这么一长串队,心中急躁,从队列最后的一个人开始,看见好欺负的就赶走,自己站着,直到干不过的就停下,这个人的插队行为类似于下面这幅图。图中,企图插队的人战斗力为6,队尾的5,4,1都小于它,,6把这三个人全部挤.原创 2020-08-10 15:29:38 · 208 阅读 · 2 评论