单调队列&&单调栈
单调队列&&单调栈
JA_yichao
这个作者很懒,什么都没留下…
展开
-
POJ 3348 Cows【计算几何】【单调栈】【凸包Graham算法】
凸包原创 2022-01-18 19:42:25 · 110 阅读 · 0 评论 -
Luogu P2742 [USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包【计算几何】【单调栈】【Graham算法】
计算几何+单调栈(Graham算法)原创 2022-01-18 16:52:24 · 142 阅读 · 0 评论 -
51nod P1275 连续子段的差异【单调队列】
单调队列原创 2022-01-15 11:55:12 · 206 阅读 · 0 评论 -
SSL P2884 假期【DP】【单调队列】
单调队列原创 2022-01-15 11:44:47 · 181 阅读 · 0 评论 -
SSL P2883 烽火传递【DP】【单调队列】
DP+单调队列原创 2022-01-15 09:30:48 · 1310 阅读 · 0 评论 -
POJ 2823 Sliding Window【单调队列】
单调队列原创 2022-01-14 19:46:19 · 156 阅读 · 0 评论 -
51nod P1272 最大距离【单调栈】
单调栈原创 2022-01-14 19:15:49 · 179 阅读 · 0 评论 -
POJ P2796 && Luogu-UVA1619 Feel Good【单调栈】
单调栈原创 2022-01-14 15:26:41 · 174 阅读 · 0 评论 -
51nod P2491 移掉K位数字【单调栈】
单调栈原创 2022-01-14 11:09:56 · 184 阅读 · 0 评论 -
51nod P1279 扔盘子【单调栈】
单调栈原创 2022-01-13 20:51:24 · 109 阅读 · 0 评论 -
POJ P2559 Largest Rectangle in a Histogram【单调栈】
单调栈原创 2022-01-13 11:20:19 · 149 阅读 · 0 评论 -
Luogu P2866 [USACO06NOV]Bad Hair Day S 【单调栈】
单调栈原创 2022-01-13 09:58:22 · 193 阅读 · 0 评论 -
51nod P2500 后面第一个大于【单调栈】
单调栈原创 2022-01-13 09:27:51 · 141 阅读 · 0 评论 -
YbtOJ 单调队列课堂过关 例3 耗费体力【单调队列】【DP】
单调队列+DP原创 2021-12-18 16:13:18 · 111 阅读 · 0 评论 -
YbtOJ 单调队列课堂过关 例2 粉刷木板【单调队列】【DP】
单调队列+DP原创 2021-12-18 11:26:53 · 150 阅读 · 0 评论 -
YbtOJ 状压DP问题课堂过关 例1 滑动窗口【单调队列】
单调队列原创 2021-12-11 15:50:19 · 248 阅读 · 0 评论 -
POJ2796 Feel Good【单调栈】
题目大意:nnn 个数,求某段区间的最小值 ×\times× 该段区间所有元素之和的最大值。思路在开头做一个前缀和,然后往左和右扩展,记录它在哪个区间内为最小值,最后直接计算最小 ×\times× 总和有没有大于答案。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace .原创 2020-08-12 18:35:34 · 189 阅读 · 0 评论 -
SSL2882 排队【单调栈:模板】
单调栈模板题注意: 单调栈没有headheadhead,因为栈里的数不会过时。本题思路:我们弄一个递减的单调栈。从后往前枚举a[i]a[i]a[i],当a[i]>栈头a[i]>栈头a[i]>栈头,就让a[i]a[i]a[i]往前挤,挤到不能挤为止。这时候我们统计答案。代码:#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#inc.原创 2020-08-11 21:48:35 · 126 阅读 · 0 评论 -
POJ2559 直方图中最大的矩形【单调栈】
本题思路用单调栈维护高和宽,当有数进来或被弹掉时就统计。最后将栈内剩余的所有数依次弹掉并统计。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;long long a[100010];long long n,tail;struct node{ long l.原创 2020-08-12 08:31:58 · 169 阅读 · 0 评论 -
POJ3494 Largest Submatrix of All 1’s【单调栈】
对每一行进行考虑,均可以视为一个柱状图,于是问题转化为为求柱状图的最大矩形面积,这可以利用单调栈来处理,利用单调栈在 O(m)O(m)O(m) 时间内处理出所有元素左边 /// 右边第一个比其大 /// 小的元素位置。在利用单调栈处理之前,还需要求出 每个位置的 “柱高”,其实只需要 对每一列进行遍历,然后从上到下依次编号即可。总的时间复杂度为 O(n⋅m)O(n⋅m)O(n⋅m)。代码:#include<algorithm>#include<iostream>.原创 2020-08-12 15:59:58 · 120 阅读 · 0 评论 -
luogu CF817D Imbalanced Array【单调栈】
本题思路对于a[i]a[i]a[i]里的每个数,求出此点在哪个区间是最大值和是最小值。怎么求?我们以当前点为中心,分左右用whilewhilewhile扩展,如果此点最小就单调递增,如果此点最大就单调递减。直到不能求为止,求完后得到[l....i....r][l....i....r][l....i....r],最后统计答案(乘法原理)最大:ans+=a[i]×(i−L[i])×(R[i]−i).最大:ans += a[i] ×(i - L[i])×(R[i] - i ). 最大:ans+.原创 2020-08-12 10:44:47 · 165 阅读 · 0 评论 -
SSL集训 2021.08.24 提高B组 T2 window【单调队列】
SSL集训原创 2021-08-24 20:36:12 · 144 阅读 · 0 评论 -
HDU3530 Subsequence【单调队列】
思路:我们设置两个单调队列,一个维护递增,一个维护递减记录起点加入的编号,用一个frontfrontfront来记录序列起点位置。当递减队列队首-递增队列队首超过KKK时,我们要比较两个队首入队的编号,找到比较小的那一个,将frontfrontfront赋值为小的+1,这时各队首表示的就是当前i−fronti−fronti−front段的最大值和最小值,最后用当前i−front+1i-front+1i−front+1和答案比较。代码:#include<algorithm>#.原创 2020-08-11 11:27:21 · 175 阅读 · 0 评论 -
SSL2521 数数【单调队列】【前缀和】
这道题和假期基本类似,可从中得到启发,不解释。#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;long long a[1000010],q[1000010];long long n,m,ans=-463453549;int main(){ cin>>.原创 2020-08-11 09:14:02 · 111 阅读 · 0 评论 -
luogu P1725 琪露诺【单调队列】【DP】
这道题和烽火传递很类似。思路:从前往后枚举,以当前位置为头,往前求区间·尾最大值,并用单调队列维护。注意点:fff数组要赋初值(很小的负数)。只有队列不为空时才能转移。f[0]=0f[0]=0f[0]=0.代码:#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std.原创 2020-08-11 08:30:36 · 132 阅读 · 0 评论 -
SSL2883 烽火传递【单调队列】【DP】
题目大意:是让你在MMM个连续区间中必须选一个,求最小代价总和思路:我们可以建一个单调递增队列qqq,用一个DPDPDP数组fff来记录到iii时的最小代价,那么动态转移方程就是:f[i]=f[q[head]]+a[i]f[i]=f[q[head]]+a[i]f[i]=f[q[head]]+a[i];这时我们再用单调队列维护就可ACACAC;代码:#include<algorithm>#include<iostream>#include<cstring&g.原创 2020-08-10 16:19:20 · 160 阅读 · 0 评论 -
SSL2884 假期【单调队列】【前缀和】
悲惨的评测结果这道题超多细节,搞了我一个小时,其实题并不难,只是我比较粗心*_*。具体看代码和注释:#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;long long a[100010],q[100010];long long n,l,r,h=1,t,ans=-2..原创 2020-08-10 16:09:40 · 163 阅读 · 0 评论 -
luoguP1886 & POJ2823 滑动窗口 【单调队列:模板】
这道题,是单调队列模板题!假如你在饭堂打饭时,有个人人高马大,急匆匆跑过来,看排了这么一长串队,心中急躁,从队列最后的一个人开始,看见好欺负的就赶走,自己站着,直到干不过的就停下,这个人的插队行为类似于下面这幅图。图中,企图插队的人战斗力为6,队尾的5,4,1都小于它,,6把这三个人全部挤掉,到了7的后面。 这就是所谓的单调队列了,队列元素保持单调递增(减),而保持的方式就是通过插队,把队尾破坏了单调性的数全部挤掉,从而使队列元素保持单调。简单介绍完单调队列之后,我们来看看这道题。程序实现过程中.原创 2020-08-10 14:03:50 · 156 阅读 · 0 评论 -
2020.2.25普及C组 跳棋(jump) 【纪中】【DP】【单调队列优化】
这道题的DP其实蛮简单的 (但我没想出来)主要就是在单调队列优化这方面那我就再提一次吧!本题的单调队列优化这里的队列并不是直接取伤害的值,而是存着地址我们可以通过qqq(队列)中的元素来找到dp中的元素那么我们认为q[h]q[h]q[h]存着最低伤害的方案为了保证f[i]f[i]f[i]取qqq中元素是合法的,也就是说,qqq中的元素必须在i−R−1i-R-1i−R−1以内,不然跳不...原创 2020-02-27 19:34:46 · 297 阅读 · 0 评论