随笔分类 -  单调队列/单调栈

摘要:bzoj1510[POI2006]Kra-The Disks 题意: 一个瓶子有n个节,每个节有一个宽度。现在要从上往下扔m个盘子,如果盘子的下一个位置宽度比该盘子的宽度小则盘子会停在这个位置。问最后一个盘子会停在那个位置。n,m≤300000。 题解: 首先利用单调栈去掉那些没用的节,之后对于每个 阅读全文
posted @ 2016-11-15 21:40 YuanZiming 阅读(214) 评论(0) 推荐(0)
摘要:bzoj1342[Baltic2007]Sound静音问题 题意: 给出一个n个数的序列,问有多少个长度为m的区间满足该区间的最大值与最小值的差≤一个定值。n≤1000000。 题解: 两个单调队列,一个维护区间最大值,一个维护区间最小值。 代码: 20161111 阅读全文
posted @ 2016-11-11 20:08 YuanZiming 阅读(187) 评论(0) 推荐(0)
摘要:bzoj2059[Usaco2010 Nov]Buying Feed 购买饲料 题意: 约翰开车来到镇上,他要带K吨饲料回家。如果他的车上有X吨饲料,每公里就要花费X^2元,开车D公里就需要D* X^2元。约翰可以从N家商店购买饲料,所有商店都在一个坐标轴上,第i家店的位置是Xi,饲料的售价为每吨C 阅读全文
posted @ 2016-10-20 18:48 YuanZiming 阅读(442) 评论(0) 推荐(0)
摘要:bzoj1345[Baltic2007]序列问题Sequence 题意: n个数,合并ai和ai+1可以得到max(ai,ai+1),代价为max(ai,ai+1)。问合并n-1次最小代价为多少。n≤1000000。 题解: (来自题解,因为我不知道为什么这样做)维护一个单调递减栈。对于每个加入的元 阅读全文
posted @ 2016-10-16 14:51 YuanZiming 阅读(252) 评论(0) 推荐(0)
摘要:bzoj1113[Poi2008]海报PLA 题意: N个矩形,排成一排。现在希望用尽量少的矩形海报盖住它们。不能盖到矩形之外的地方。n≤250000。 题解: 发现如果有一对矩形高度相等,且中间的矩形高度都比它们高,那么就可以省下一个矩形海报。故可以用个单调递增的栈维护。 代码: 20160919 阅读全文
posted @ 2016-09-19 21:39 YuanZiming 阅读(177) 评论(0) 推荐(0)
摘要:bzoj2442[Usaco2011 Open]修剪草坪 题意: 从一个序列中选n个数,要求这些数中不能有超过k个数在原序列中位置是连续的。求最大的取数之和。n≤100000。 题解: f[i]表示不选i,1到i-1可以得到的最大取数之和。则f[i]=max(f[j]+sum[i-1]-sum[j] 阅读全文
posted @ 2016-09-16 15:49 YuanZiming 阅读(213) 评论(0) 推荐(0)
摘要:bzoj2096[Poi2010]Pilots 题意: 给一个序列和一个最大值,要求找一个最长连续子串,使里面任意两个数相差不超过这个最大值。序列大小≤3000000 题解: 用两个单调队列,分别维护当前区间的最大值和最小值,然后用双指针法。 代码: 20160829 阅读全文
posted @ 2016-09-03 21:43 YuanZiming 阅读(347) 评论(0) 推荐(0)
摘要:bzoj3401[Usaco2009 Mar]Look Up 仰望 题意: 约翰的N头奶牛站成一排,奶牛i的身高是Hi。对于奶牛i,如果奶牛j满足i<j且Hi<Hj,我们可以说奶牛i可以仰望奶牛j。求出每只奶牛离她最近的仰望对象。n≤100000. 题解: 用一个单调栈维护即可。 代码: 20160 阅读全文
posted @ 2016-09-03 21:33 YuanZiming 阅读(282) 评论(0) 推荐(0)
摘要:bzoj4385[POI2015]Wilcze doły 题意: 给出一个序列,你能将一个长度不超过d的连续子序列全部变为0,要求和不超过p的最长连续子序列。序列大小≤2000000。 题解: 用两个指针,每次右指针右移时就将新加入元素所能消掉的区间加入单调队列,如果当前区间和减单调队列中最大的元素 阅读全文
posted @ 2016-08-23 17:47 YuanZiming 阅读(455) 评论(0) 推荐(0)
摘要:bzoj1597[Usaco2008 Mar]土地购买 题意: n块土地,现在要求把土地分成几份,每份费用为该份中土地长最大值和宽最大值成绩,要求最小费用。n≤5000 题解: 当一块土地长宽都比另一块土地小时,这块土地可以当作另一块土地的附属品,对答案不影响。因此先按长第一关键字,宽第二关键字排序 阅读全文
posted @ 2016-08-17 14:12 YuanZiming 阅读(195) 评论(0) 推荐(0)
摘要:bzoj3048[Usaco2013 Jan]Cow Lineup 题意: 给你一个序列,你最多可以删去k类数(数列中相同的数字被称为一类数)。求通过删数得到的该序列中的最长完美序列(满足所有的数字相等的连续子序列被叫做完美序列)。序列大小≤100000 题解: 先离散化,然后维护一个单调队列,如果 阅读全文
posted @ 2016-08-16 22:35 YuanZiming 阅读(271) 评论(0) 推荐(0)
摘要:bzoj3314[Usaco2013 Nov]Crowded Cows 题意: n头牛,如果某头牛左边距离D以内有高度至少是它的两倍的牛,右边也有,则此牛会感觉到不舒服。问多少牛会不舒服。n≤50000 题解: 用单调队列维护距离D以内的区间最大值,判断是否至少是当前牛的两倍,再倒回去做一遍即可。 阅读全文
posted @ 2016-08-15 21:55 YuanZiming 阅读(278) 评论(0) 推荐(0)
摘要:bzoj1657[Usaco2006 Mar]Mooo 奶牛的歌声 题意: n头奶牛,每头一个身高和音量。每头牛的音量会被左边离它最近的比它高的和右边离它最近的比它高的牛听到。问牛听到的最大音量。n≤50000 题解: 单调栈维护牛的身高递减。左右各做一次,累加求解。 代码: 20160808 阅读全文
posted @ 2016-08-12 20:59 YuanZiming 阅读(232) 评论(0) 推荐(0)
摘要:bzoj1660[Usaco2006 Nov]Bad Hair Day 乱发节 题意: 给一个序列a,令ci=ai+1到an第一个比ai大的位置j与i的距离。求sigma(i,1,n)ci。 题解: 用一个递减的单调栈维护。注意最后答案要开long long。 代码: 20160804 阅读全文
posted @ 2016-08-06 14:33 YuanZiming 阅读(166) 评论(0) 推荐(0)
摘要:bzoj1047[HAOI2007]理想的正方形 题意: 有一个a*b的整数组成的矩阵,求一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。a,b≤1000,n≤100 题解: 做4次单调队列。先利用单调队列求出第i行第j列到第i行第j+n-1列的最大最小值,再利用这个求出第i行第 阅读全文
posted @ 2016-07-23 13:11 YuanZiming 阅读(292) 评论(0) 推荐(0)
摘要:bzoj1007[HNOI2008]水平可见直线 题意: 平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆盖的。给出n条直线,已知其斜率和截距,且n条直线两两不重合,求出所有可见的直线。 题解: 和上一道差不多,但是因为是比 阅读全文
posted @ 2016-07-22 19:48 YuanZiming 阅读(195) 评论(0) 推荐(0)
摘要:bzoj3190[JLOI2013]赛车 题意: 赛场上一共有N辆车。赛道是一条无限长的直线。在这个比赛过程中,如果一辆赛车曾经处于领跑位置的话(即没有其他的赛车跑在他的前面),这辆赛车最后就可以得奖。已知所有赛车的起始位置(离起跑线距离)和速度,求出那些赛车将会得奖。 题解: 有人说是类似线性规划 阅读全文
posted @ 2016-07-21 21:06 YuanZiming 阅读(434) 评论(0) 推荐(0)
摘要:bzoj3874[Ahoi2014]宅男计划 题意: n种食物,每种有价钱和保质期。每次叫外卖要F元,可以购买任意多份食物。共有m元,问一共能过多少天使得每天都能吃到一份不过期的食物。n≤200,其他都≤1018 题解: 先排序+单调队列去掉那些价钱贵保质期反而短的外卖,剩下的队列按保质期从短到长排 阅读全文
posted @ 2016-07-19 22:51 YuanZiming 阅读(644) 评论(0) 推荐(0)