单调
“单调”学习
CCCCDEV_CCCC
志在四方少年,羡慕南飞的雁
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1175 表达式
1175 表达式原创 2022-07-12 20:38:42 · 192 阅读 · 0 评论 -
1449 后缀表达式
1449 后缀表达式good练习栈的表达式,给定一个后缀表达式,求值,好理解,但不好实现先自己玩玩首先,是一个人都得知道如何求后缀表达式的值,从前往后一个一个扫描,碰到表达式就取出栈顶求值再放进去这个题也行,不过就是存值的时候比较麻烦枚举几个状态就行了#include<iostream>#include<cstdio>#include<algorithm> #include<string>#include<cstring>u原创 2021-10-01 13:02:23 · 152 阅读 · 0 评论 -
2629 好消息,坏消息!
2629 好消息,坏消息!知道这些信息的好坏度,研究如何不让老板发怒题意很好理解,给定一个序列,使得这个序列的和不能为负数的方案,很显然,和前缀和单调队列有关系而且我发现,单调队列和前缀和经常在一起考,并且前缀和这个东西在提高组的有很大的用武之地对于这个题很显然,一个数列有很多种情况,也很显然,这个题又是一个破环为链的操作对于破环为链的操作我们已经很熟悉了,需要开两倍的空间要想让uim同学不被炒鱿鱼,我们只能让这个区间内的和为正数,熟悉前缀和的肯定会明白如何计算区间和,那么这个题其实就没有什么了原创 2021-08-08 16:46:02 · 127 阅读 · 0 评论 -
6510 奶牛排队
6510 奶牛排队这个题就不像之前那样这么简单,因为要双向,感觉比较难了,所以升级成了绿题也就是找出一个区间,使得区间左边是这个区间内最小的,区间右边是这个区间内最大的,中间的奶牛不能相等我们知道,单调栈是可以找出一个序列中的最大值最小值的,所以我们可以求序列的两个最值,通过计算最大值最小值之间的距离,在比较最大的就好单调栈的最大值最小值思想是一样的,我们先用最大值来举例子1.枚举序列,把序列从大到小放入栈中,越靠下的对应值越小;算最大值的时候,也把最小值算出来2.假设已经算出来了a1~ai的答原创 2021-08-06 16:32:34 · 417 阅读 · 0 评论 -
2032 扫描
2032 扫描给你一个可以盖住k个数的木板,求每个木板内的最大值,裸的单调队列题#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>#include<stack>using namespace std;const int SIZE=3e6+5;const原创 2021-08-06 15:14:58 · 126 阅读 · 0 评论 -
2947 look up s
2947 look up s每只奶牛都朝有看齐,求每一只奶牛的最近的仰望对象,很明显,这是一单调栈的模板,没有什么好解释的,输出的时候需要换行,并且输出的是编号#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>#include<stack>using nam原创 2021-08-06 14:47:23 · 182 阅读 · 0 评论 -
2442 修剪草坪
2442 修剪草坪题目要学会化简题目,理解题意N只奶牛去修剪草坪,每只效率为a[i],不能连续选k只,问最大效率很明显和单调队列有关系,但是不允许连续选择,也和普通的单调队列没关系很显然,这个题又是一个动态规划,我快吐了设f[i]表示i不选并且之前选的都是合法的情况下答案损失最小值那么f[i]=f[j]+a[i],然后用单调队列总效率减去min(f[i])#include<iostream>#include<cstdio>#include<algorith原创 2021-08-06 14:37:31 · 287 阅读 · 0 评论 -
1198 最大数
1198 最大数原创 2021-08-06 12:58:53 · 120 阅读 · 0 评论 -
1901 发射站
1901 发射站原创 2021-07-24 19:39:30 · 94 阅读 · 0 评论 -
区间最值(单调)
区间最值(单调)题目:有一列n个数字a[1]…a[n],对所有1<=L<=R<=n求max(a[L],a[L+1],…,a[R])并求和, n<=1e6这是一道单调栈的应用题,如果用暴力枚举区间然后枚举一个数,那么将会是n3的复杂度,太慢了吧…所有,我们需要反过来,枚举每一个数在哪些区间里是最大的,不用盲目的去枚举这么多区间,我们枚举这个数在哪一个区间最大就好了,所以我们需要卡一个端点,这个端点a是比我们枚举的点b大,那么以这两个点为区间的b是最大值...原创 2021-07-24 19:17:50 · 307 阅读 · 0 评论 -
单调栈&单调队列
单调栈&单调队列单调栈:什么是单调栈,从字面意思能知道数据都是有序的,所以单调栈分为单调递增单调递减。现在有一组数,10 3 7 4 12从左往右以此进行入栈,如果栈空或者入栈元素值小于栈顶元素,那么入栈;否则,入栈就会破坏单调性,需要把比入栈元素小的元素全部出栈,递减栈就反过来。10入栈,栈为空,直接入栈3入栈时,栈顶元素10大于3,入栈7入栈,栈顶元素3比7要小,所以3出栈7入栈4入栈,栈顶元素7大于4入栈12入栈是,元素10 7 4全部小于12,全部出栈int dandia原创 2021-04-22 22:48:38 · 127 阅读 · 0 评论
分享