![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单调栈
yashem66
长期提供绕地人造卫星清洗除尘服务。
展开
-
BZOJ1007 水平可见直线 (单调栈 直线判交)
题目大意给出n条直线,表示成y=Ax+B的形式(|A|,|B|<=500000),且n条直线两两不重合.求出所有可见的直线。可见的定义为从y为无穷大的地方往下看可见,既未被其他直线完全覆盖。题解把所有的直线按k递增为第一关键字,b递减为第二关键字排序。因为所有可见的直线一定能组成一个类似下凸的形状。然后逐个压入栈中,压栈之前把这条直线能覆盖的直线都弹出,既只要这条直线与sta[top-1]的交点在s原创 2017-04-07 08:42:52 · 635 阅读 · 0 评论 -
(复习)数据结构--单调栈--新知训练 (POJ2796,POJ2559,POJ3494,BZOJ1012)
POJ-2796 Feel Good题意: 给出一个长度为n(1<=n<=100 000)的序列,求出一个子序列,使得这个序列中的最小值乘以这个序列的和的值最大。输入格式: 输入数据有2行,第一行正整数n,第2行n个正整数ai。(0<=ai<=10^6)输出格式: 输出有2行,第一行为题目描述中的最大值,第二行2个数字,分别为子序列的起点和终点位置。样例输入: 6 3 1 6 4 5 2样原创 2016-08-31 21:03:27 · 420 阅读 · 0 评论 -
(复习)数据结构--栈--表达式求值
很久都没有写栈的程序了呢……表达式求值的精髓就在于先把中缀表达式转为后缀表达式,如把“2+3*4”转化为“2 3 4 * +”。一脸懵逼的同学可以自己回去看看学案或者百度百度。由脑补可以后缀式求值是要用到栈的。所有说表达式求值可以分为两部分: ——1.把中缀式转换为后缀式 ——2.后缀式求值代码:#include<cstdio>#include<cstdlib>#include<cmath>原创 2016-08-30 20:33:36 · 610 阅读 · 0 评论