
单调栈
文章平均质量分 59
单调栈
李峻枫
这个作者很懒,什么都没留下…
展开
-
联想杯 - G. Gentle Jena
题目大意给出一个长度为nnn的数组b1,b2,⋯ ,bnb_1,b_2,\cdots,b_nb1,b2,⋯,bn。定义函数f(l,r)=∑i=lrmin{bi}f(l,r)=\displaystyle\sum_{i=l}^r \min \{b_i\}f(l,r)=i=l∑rmin{bi}定义权值Ai=∑1≤l≤r≤if(l,r)A_i=\displaystyle\sum_{1\le l\le r\le i} f(l,r)Ai=1≤l≤r≤i∑f(l,r)AiA_iAi对998244原创 2021-07-29 18:50:02 · 109 阅读 · 0 评论 -
Codeforces Global Round 9 C. Element Extermination
题目大意给出一个nnn个数的数列a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an。定义删除操作为:若ai<ai+1a_i<a_{i+1}ai<ai+1,则可以删除aia_iai或者ai+1a_{i+1}ai+1,整个数列的顺序保持不变。问是否存在一种方案,使得最后只剩下一个数。时间限制1s数据范围n≤3×105n \le 3\times 10^5n≤3×105题解考虑这个删除的过程,显然最开始是用a1a_1a1x向右来删除,原创 2021-07-20 23:02:22 · 207 阅读 · 0 评论 -
F - 我,不是说了能力要平均值么 · 改三
F - 我,不是说了能力要平均值么 · 改三题目大意题目给出一个长度为nnn的序列,求出所有n×(n+1)2\frac{n \times (n + 1)} {2}2n×(n+1)个区间的最大值和最小值的和。答案要对109+710^9+7109+7取模。题解换一个思考角度,考虑每个数能成多少个区间的最值,也就是说它对答案的贡献。很显然,只要找到左边比它大的数和右边比它大的数,那么中间这一段,最大值都是它自己。用单调栈来维护,求最大值的时候,维护一个单调递减的栈。一个进栈的时候,将比它小的元素原创 2021-06-06 22:56:21 · 158 阅读 · 0 评论 -
JZOJ5415. 【NOIP2017提高A组集训10.22】公交运输
Description城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置。其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车的性质。ci代表这个从i出发的公交车,相邻两个停靠站之间的距离。vi表示每坐1站的花费。 注意,一辆公交车出发后会向n号车站的方向行进。同时,一名乘客只能从起点站上车,但可以从任意停靠站下车。校庆志愿者原创 2017-10-24 08:24:18 · 461 阅读 · 0 评论 -
JZOJ5956. 【NOIP2018模拟11.7A组】easy LCA
题解可以知道连续一段的lca是他们两两lca中深度最小的一个。这样就可以先预处理出来两两的lca的一个序列,这个序列的长度是n-1的。通过前面的结论,考虑一个lca的贡献,显然是左边连续的一段深度比它大与右边连续一段深度比它大的。换句话说就是找左边第一个比它小的,右边第一个比它小的。单调栈。code#include<cstdio>#include<cstri...原创 2018-11-07 22:17:42 · 192 阅读 · 0 评论