
基础数据结构
Eirlys_North
这个作者很懒,什么都没留下…
展开
-
bzoj 3401 && bzoj 1657 单调栈
题意:对于每一个i,找到离它最近的j满足 i倒序单调栈type rec=record h,num:longint;end;var n,top :longint; i :longint; a,ans :array[0..100010原创 2017-02-28 23:22:56 · 377 阅读 · 0 评论 -
bzoj 2086 单调栈
题意:给定n个正整数,再给出m个正整数k,对于每个k,可以有如下操作:每次选择一个大于k的正整数a[i],将a[i]减去1,选择a[i-1]或a[i+1]中的一个加上1。经过一定次数的操作后,求一个最长的连续子序列满足这个子序列的每个数都不小于k注意此题判的时候不忽略行末空格_(:3 」∠)_虽然操作很唬人,但是它最终要求是一个连续的子序列满足每个数都不小于k 等价于 这个连续的原创 2017-03-03 21:54:52 · 354 阅读 · 0 评论 -
bzoj 1345 单调栈
题意:给定一个长度为n的序列a1,a2,...,an,每次可以将ai和a+1合并为max{ai,ai+1},每次合并的代价为max{ai,ai+1},求最少的代价将序列合并成一个元素贪心思想:一个数总是和它左右两边第一个大于它的数中较小的那个合并顺序处理,单调栈维护对于元素ai,如果它大于等于栈顶元素,说明栈顶元素的左右两边第一个大于它的数已经找到,即ai和stack[top-1]原创 2017-03-04 08:53:06 · 397 阅读 · 0 评论 -
bzoj 1660 单调栈
题意:给定长度为n的序列a1,a2...an,对于每个ai求出它右边第一个大于等于它的位置j,记做ci=j-i-1,求sigma(ci) (1单调栈裸上var i :longint; n,top :longint; ans :int64; z,a原创 2017-03-04 15:53:45 · 329 阅读 · 0 评论 -
bzoj 1113 & bzoj 1683 &bzoj 1628 单调栈【经典】
题意:n个矩形排成一排,求用最少的矩形海报cover它们显然最多n个,即一个矩形用一个考虑减少所用海报对于两个高度相等的矩形,当用同一张海报覆盖的时候,它们之间所有的矩形的高度都不低于它们的高度此时答案减1那么所求可转化为:我们对每一个矩阵,找到它左边第一个不高于它的矩阵,判断高度是否相等,如果相等则所用海报数量-1此时这个模型一出,显然的裸单调栈var原创 2017-03-04 12:13:54 · 497 阅读 · 0 评论 -
bzoj 2227 单调队列
某国进行了连续n天的温度测量,测量存在误差,测量结果是第i天温度在[l_i,r_i]范围内。求最长的连续的一段,满足该段内可能温度不降。显然的四件事情:(1)对于我们所选的区间[L,R],我们一定会选择L的最小值l(2)当li>rj的时候,i和j是不能同时位于一个区间内的(3)满足“先进先出”且区间内具有单调性(4)当li所以,我们会发现我们需要单调队列来维原创 2017-04-15 08:02:46 · 431 阅读 · 0 评论 -
bzoj 1047 单调队列
题意:在a*b的矩阵里,找到一个n*n的子矩阵,使这个子矩阵里的最大值与最小值的差最小n是固定的,484很像一个固定的窗口在一个面上移动如果把题目的条件改为一维,即给定一个序列,窗口长度是n,求这个窗口里最大值与最小值,你会想起什么?对,没错,就是单调队列但这是二维怎么破?拆成一维呀先对每一行i以它在矩阵里的值为基础,维护两个单调队列f1、g1,分别维护[i,j-n+1原创 2017-04-15 08:17:59 · 799 阅读 · 0 评论