栈 队列
moomhxy
你若是天才,我便是疯子
展开
-
洛谷 P6040 单调队列优化DP
题目链接:https://www.luogu.com.cn/problem/P6040简单一维单调队列优化DP,单调队列优化DP的话要知道单调队列需要维护的是什么,并且有明确的左右边界,这样才能及时的加入新策略或删除过时策略#include<bits/stdc++.h>using namespace std;typedef long long ll;#define fi...原创 2020-04-29 14:57:15 · 251 阅读 · 0 评论 -
POJ 1821 Fence 动态规划+单调队列优化
题目链接:https://www.acwing.com/problem/content/300/题意:有N块木板从左到右排成一行,有M个工匠对这些木板进行粉刷,每块木板至多被粉刷一次。第 i 个木匠要么不粉刷,要么粉刷包含木板 Si 的,长度不超过 Li 的连续的一段木板,每粉刷一块可以得到 Pi 的报酬,不同工匠的Si不同。思路:f[i][j]表示前i个工匠粉刷前j块木板的最多报酬,那么f...原创 2020-04-09 14:32:44 · 435 阅读 · 0 评论 -
牛客网 Equivalent Prefixes【单调栈】
题目链接https://ac.nowcoder.com/acm/contest/881/A思路:假设前m个位置都满足条件,那么就需要判断第m+1个是否满足,要么两个都大,要么两个都小,要么两个能影响的区间相同,所以利用单调栈能很方便的解决这个问题。#include<set>#include<cstdio>#include<vector>#in...原创 2019-07-19 13:48:40 · 141 阅读 · 1 评论 -
牛客网 sequence 【线段树+单调栈】
官方题解:• 假设a中的元素互不相同,我们考虑a中的某个元素作为min的时刻。• 对于每个a[i],我们找到左边第一个比它大的元素a[l],右边第一个比它大的a[r]• 那么左端点在[l+1,i],右端点在[i,r-1]的区间min就为它。• 求l和r可以使用单调栈。• 考虑如何求某个a[i]作为min的答案。• 如果a[i]>0我们就是要最大化sum(b[l..r])。a...原创 2019-07-29 18:33:02 · 233 阅读 · 0 评论 -
牛客网 Second Large Rectangle 【单调栈处理第二大矩形面积】
题目链接https://ac.nowcoder.com/acm/contest/882/H题意:给你n行m列的矩阵,元素为0或1,让你求第二 大的矩形(全部都是1的情况)。思路:每一行都可以看出直观图的形式,然后用单调栈处理,这是一个经典问题,不过由于要求第二大的,所以要考虑一些特殊情况, 例如 2*3的矩阵,要考虑1*3和2*2的情况,因为可能比第二大要更优。#include...原创 2019-07-21 15:16:56 · 229 阅读 · 0 评论 -
HDU 6592-Beauty Of Unimodal Sequence【单调栈+LIS】
题意:给你一个序列,让你找长度最长的字典序最小和最大的单峰序列,单峰序列就是满足先增后降的序列。思路:先正着求一遍LIS,再反着求一遍LIS,然后用单调栈来模拟。求字典序最小的话,首先找到第一个顶峰,然后往前找递减的序列中下标较小的,往后就依次找,这样能保证字典序最小。最大的话找到最后一个顶峰,往前是依次找,往后是找LIS中下标大的。#include<bits/stdc++...原创 2019-08-13 14:27:14 · 384 阅读 · 0 评论 -
POJ 2823-Sliding Window【单调队列】
给定一个大小为n≤1e6的数组。有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。您只能在窗口中看到k个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为[1 3 -1 -3 5 3 6 7],k为3。Window position Minimum value Maximum value [13-1]-35367...原创 2019-08-09 15:15:43 · 185 阅读 · 0 评论 -
牛客网 Planting Trees 【单调队列】
题意:给你一个矩阵,让你找到一个最大的子矩阵,使得矩阵任意元素之间的差值不大于m。思路:考虑枚举矩形的上下边界,然后再枚举矩形的右边界,用单调队列来维护当前最大最小值,每次枚举下边界的时候将当前行加进去,枚举右边界的时候我们就可以通过单调队列维护的最值确定左边界。#include<bits/stdc++.h>using namespace std;typedef long...原创 2019-08-09 19:47:48 · 230 阅读 · 0 评论 -
牛客网 All-one Matrices【单调栈】
题意:给你一个n*m的01矩阵, 让你找到所有满足以下条件的子矩阵:1. 矩阵元素全部为12.矩阵不能被另一个全1子矩阵包含思路:和之前的单调栈求矩形面积很相似,我们枚举每一行, 只要知道每次每列能扩展的左右边界就行了,然后记得会有重复情况,要去重。#include <bits/stdc++.h>using namespace std;typedef long l...原创 2019-08-10 23:39:43 · 295 阅读 · 0 评论 -
AcWing 289. 环路运输【环形DP + 单调队列优化】
在一条环形公路旁均匀地分布着N座仓库,编号为1~N,编号为 i 的仓库与编号为 j 的仓库之间的距离定义为 dist(i,j)=min(|i-j|,N-|i-j|),也就是逆时针或顺时针从 i 到 j 中较近的一种。每座仓库都存有货物,其中编号为 i 的仓库库存量为AiAi。在 i 和 j 两座仓库之间运送货物需要的代价为Ai+Aj+dist(i,j)。求在哪两座仓库之间运送货物...原创 2019-09-17 17:19:17 · 224 阅读 · 0 评论 -
第四届河南省程序设计大赛C nyoj 305-表达式求值【栈模拟】
Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min(20,23)的值是20,add(10,98)的值是108等等。经过训练,Dr.Kong设计的机器人卡多甚至会计算一种嵌套的更复杂的表达式。假设表达式可以简单定义为:1.一个正的十进制数x是一个表达式。2.如果x和y是表达式,则函数min(x,y)也是表达...原创 2019-05-12 21:55:44 · 202 阅读 · 0 评论 -
HDU4699-Editor【对顶栈】
思路:用两个栈来存储数据,一个栈存放到下标x的元素,另一个存放剩余的元素。用数组sum记录前缀和,而f数组记录满足条件的最大前缀和。#include<set>#include<map>#include<cmath>#include<queue>#include<stack>#include<cstdio>...原创 2019-03-06 21:52:18 · 190 阅读 · 0 评论 -
POJ2559-Largest Rectangle in a Histogram【单调栈】
A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, the figure on the left shows ...原创 2019-03-06 17:27:09 · 182 阅读 · 0 评论 -
C++ STL - queue使用详解
c++队列模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。下面详细介绍queue的使用:一:定义queue(要有头文件#include <queue>)queue<int> q1;queue<double> q2;...原创 2018-08-13 15:19:31 · 8708 阅读 · 1 评论 -
c++ STL - priority_queue优先队列详解
简述普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现,其在插入数据会自动排序。头文件#include<queue>声明priority_queue<T, C...原创 2018-08-18 22:50:11 · 486 阅读 · 0 评论 -
洛谷P1996 约瑟夫问题【队列】
题目背景约瑟夫是一个无聊的人!!!题目描述n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.输入输出格式输入格式: n m 输出格式: 出圈的编号 输入输出样例输入样例#1: 复制10 3输出样例#1: ...原创 2018-10-15 22:28:28 · 359 阅读 · 0 评论 -
POJ2431-Expedition【优先队列+贪心】
题目大意:卡车每走一公里就消耗一单位的汽油,初始时给你p单位油,你要到达l距离的终点。其中路上有n个补给点可以加油,并且油箱容量无限大,问你最少可以停车几次。 思路:因为油箱无限大,所以我们可以这么认为,我们路过一个加油站之后,我们在之后的路上随时可以选择加那个加油站的油,而且肯定是一次加完B_i,所以我们从汽车初始状态开始开,到没油了,看看路上路过有加油站没,选路过过油最多的,加上,继续...原创 2018-10-28 10:00:27 · 174 阅读 · 0 评论 -
51nod2160 数字游戏【栈】
现在有n个数字依次进入一个栈,每个数字a进入栈的时候,如果栈顶元素小于a,则会将栈顶元素弹出,新的栈顶元素如果仍然小于a,则会将新的栈顶元素继续弹出,直到栈顶元素大于等于a为止,a才会加入栈。问n个数字依次进入后,最后栈里的数字依次是? 收起输入输入第一行一个整数n(n<=100000),表示有n个数字依次进入栈。接下来n行,每行一个整数,表示第i个数字。输出若干行...原创 2018-11-27 22:34:06 · 939 阅读 · 2 评论 -
poj3250Bad Hair Day 【单调栈】
Some of Farmer John's N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self-conscious about her messy hairstyle, FJ wants to count the number of other cows that can see the top of ...原创 2018-12-01 21:20:32 · 144 阅读 · 0 评论 -
Codeforces Round #536 (Div. 2) B. Lunar New Year and Food Ordering【优先队列】
题意:就是有m个人点菜,如果点的那个菜不够就挑选最便宜的给他,如果剩下的菜不够这个人买,那么这个人就会生气并且会拿走剩下的菜并且不给钱,要你输出这m个人的花费。思路:我们用pair关联第i个菜的价钱与其下标i,将其放入优先队列中存储。我们对每个人分类讨论,最后算出来价钱,详情看代码。#include<cstdio>#include<queue>#include...原创 2019-02-01 22:43:09 · 190 阅读 · 0 评论 -
UVA136-Ugly Numbers 【优先队列】
Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ... shows the first 11 ugly numbers. By convention, 1 is included. Write a program to ...原创 2019-02-17 14:46:32 · 180 阅读 · 0 评论 -
UVA540-Team Queue【队列】
思路:紫书上的例题,首先用map来存储每个人在哪个队,如果用数组的话也可以,但是花费的空间比较大,而且如果某个人序号比较大的话开不来那么大空间,所以用map很方便,之后用两个队列,一个是总队列,另一个是每个小组的队列,接下来我们模拟就行了。#include<set>#include<map>#include<cstdio>#include<cm...原创 2019-02-19 15:52:49 · 160 阅读 · 0 评论 -
POJ3784-Running Median 【对顶堆】
For this problem, you will write a program that reads in a sequence of 32-bit signed integers. After each odd-indexed value is read, output the median (middle value) of the elements received so far....原创 2019-02-27 12:55:41 · 189 阅读 · 0 评论 -
C++ STL-stack使用详解
stack 类是容器适配器,它给予程序员栈的功能——特别是 FILO (先进后出)数据结构。该类模板表现为底层容器的包装器——只提供特定函数集合。栈从被称作栈顶的容器尾部推弹元素。一:头文件#include<stack>二:定义stackstack<int> s;创建一个空的 stack 对象。stack<int, list<int...原创 2018-08-13 15:40:50 · 574 阅读 · 0 评论