单调栈
小菜鸡加油
菜鸡
什么都能折磨
展开
-
1313C2 - Skyscrapers (hard version)(思维+单调栈+前缀和)
https://codeforces.com/problemset/problem/1313/C2思路:可以发现答案是某点做最高峰的开口向下的二次函数。对于一个点,如果其左边存在能比他大的数,那么就可以拉平,如果比其下,那么就要更新最大值。于是对于每一个数,我们要快速找到其最近的比他小的数。也就是维护某个数作为最大值的区间范围。那么就是单调栈。维护好之后就可以跑前缀和左边的贡献值:左边第一个小于等于他的点的pre[l[i]]+m[i]*这两点之间的距离。右边的贡献值:右边第一个小于等原创 2021-04-05 00:10:25 · 150 阅读 · 0 评论 -
547B - Mike and Feet(思维+单调栈)
https://codeforces.com/problemset/problem/547/B思路:本质上是求每个长度的滑动窗口的所有最小值中的最大值。考虑一个数其作为最小值最多能到左右多长的区间。这个可以单调栈做。做完之后就可以通过这个维护每个区间长度的最大值。注意最后还要再扫一遍,ans[i]=max(ans[i],ans[i+1]);因为ans[10]<=ans[9]<=ans[8]....#include<iostream>#include<原创 2021-04-01 20:31:43 · 174 阅读 · 0 评论 -
E. Water Balance(思维+单调栈+平均数)
https://codeforces.com/contest/1300/problem/E思路:如果进行考虑呢?假设现在有一段区间平均值为x1,有一段区间平均值为x2,现在新加入一个x3。如果x3<x2,那么必然x3加入是能使平均分降低的,所以把x3加入到x2.那么再看新的x2''是不是小于x1,如果小就加入,不小就继续往后枚举,每次进行判断。类似单调栈的模拟。#include<iostream>#include<vector>#include<原创 2020-09-26 00:20:14 · 206 阅读 · 0 评论 -
Discrete Centrifugal Jumps(单调栈+dp)
https://codeforces.com/contest/1407/problem/D首先定义dp[i]:当前共有i栋楼表示到第i栋楼的最小步数。根据条件有如下转移:1.dp[i]=dp[i-1]+1;2.i前面有一个下标假设为j,且这个j满足(a[j]>max(a[j+1]......,a[i-1]); dp[i]=dp[j]+1;3.i前面有一个下标假设为j,且这个j满足(a[j]<min(a[j+1].......a[i-1]);dp[i]=dp[j]+1;那么原创 2020-09-09 15:10:20 · 2224 阅读 · 0 评论 -
P2422 良好的感觉
https://www.luogu.com.cn/problem/P2422题目描述kkk 做了一个人体感觉分析器。每一天,人都有一个感受值A_iAi,A_iAi越大,表示人感觉越舒适。在一段时间\left[i, j\right][i,j]内,人的舒适程度定义为\left[i, j\right][i,j]中最不舒服的那一天的感受值\times×\left[i, j\right][i,j]中每一天感受值的和。现在给出 kkk 在连续NN天中的感受值,请问,在哪一段时间,kkk ...原创 2020-07-14 22:27:06 · 482 阅读 · 0 评论