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

摘要:我们对 作文库 建出广义后缀自动机。考虑用$SAM$处理出来一个数组$mx[i]$,表示从作文的第$i$个位置向左最远在作文库中出现的子串的长度。这个东西可以在$SAM$上跑$trans$边来实现(其实求出来的是作文前i位在作文库中出现的最长后缀)。 处理出来这个东西,我们考虑用$DP$求答案。发现 阅读全文
posted @ 2019-01-06 17:49 Xu-daxia 阅读(137) 评论(0) 推荐(0) 编辑
摘要:一开始的时候感觉就是一个主席树裸题。 然后发现自己错了。 首先建出后缀数组。 设$irk[j]$显然i更优。 如果$rk[i] include include include include include include include using namespace std; const int 阅读全文
posted @ 2019-01-03 09:13 Xu-daxia 阅读(225) 评论(0) 推荐(0) 编辑
摘要:设$l[i]$为i左边第一个比i大的数的下标。$r[i]$为i右边第一个比i大的数的下标。 我们把$p1,p2$分开考虑。 当产生贡献为$p1$时$i$和$j$一定满足,分别为$l[x],r[x]$枚举每一个值为$i$,$j$之间最大值可证。 党产生贡献为$p2$时$i$和$j$满足分别为$l[x] 阅读全文
posted @ 2018-12-23 21:37 Xu-daxia 阅读(232) 评论(0) 推荐(0) 编辑
摘要:题解 以前做过很多单调队列优化DP的题。 这个题有一点不同是对于有的状态可以转移,有的状态不能转移。 然后一堆边界和注意点。导致写起来就很难受。 然后状态也比较难定义。 dp[i][j]代表前i个人涂完前j个位置的最大收益。 然后转移考虑 第i个人可以不刷。dp[i][j]=dp[i-1][j]; 阅读全文
posted @ 2018-10-08 21:01 Xu-daxia 阅读(121) 评论(0) 推荐(0) 编辑
摘要:题意 找出出现k次的可重叠的最长子串的长度 题解 用后缀数组。 然后求出heigth数组。 跑单调队列就行了。找出每k个数中最小的数的最大值。就是个滑动窗口啊 (不知道为什么有人写二分,其实写啥都差不多快,可能是因为二分是一个常见的模型吧) 阅读全文
posted @ 2018-09-12 19:47 Xu-daxia 阅读(230) 评论(0) 推荐(0) 编辑
摘要:题意 给定一个长度为n的序列,你有一次机会选中一段连续的长度不超过d的区间,将里面所有数字全部修改为0。请找到最长的一段连续区间,使得该区间内所有数字之和不超过p。 (1<=d<=n<=2000000,0<=p<=10^16) 题解 一看以为是DP结果想了半天想不出来。(其实有点像) 然后又以为是单 阅读全文
posted @ 2018-08-08 19:48 Xu-daxia 阅读(241) 评论(0) 推荐(0) 编辑
摘要:题意 给出N个正整数a[1..N],再给出一个正整数k,现在可以进行如下操作:每次选择一个大于k的正整数a[i],将a[i]减去1,选择a[i-1]或a[i+1]中的一个加上1。经过一定次数的操作后,问最大能够选出多长的一个连续子序列,使得这个子序列的每个数都不小于k。M组询问 n<=1000000 阅读全文
posted @ 2018-08-08 17:28 Xu-daxia 阅读(297) 评论(0) 推荐(1) 编辑
摘要:题意 给定k,n,和n*n的矩阵,求一个子矩形满足权值和在[k,2k]之间 , 题解 这里用到了极大化矩阵的思想。推荐论文《浅谈用极大化思想解决最大子矩阵问题》Orz 如果有一个元素在[k,2k]之间。直接输出就好。 否则。把所有大于2k的元素作为障碍点。 求每一个最大化矩阵。(用单调队列) 如果这 阅读全文
posted @ 2018-08-08 15:34 Xu-daxia 阅读(277) 评论(0) 推荐(1) 编辑
摘要:题意 N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. (n<=250000,wi,di<=109) 题解 这种一堆矩形,又不像数据结构的题,一般都是单调栈。 考虑一个贪心:对于一个高度,一定要取得尽量宽。 像这样: 然后我们用单调栈求出左边最后一个高度大于等于它的和右边最后一个高 阅读全文
posted @ 2018-08-06 22:36 Xu-daxia 阅读(255) 评论(0) 推荐(0) 编辑
摘要:题意 给定一个长度为n的序列a1~an,从中选取一段长度在s到t之间的连续一段使其平均值最大。(n<=100000) 题解 二分答案平均值。 judge时把每一个a[i]-mid得到b[i] 在b[i]中找到一段合法的串使其权值和最大。 当最大权值和大于等于0时则mid上移。 求最大权值和用单调队列 阅读全文
posted @ 2018-08-03 15:04 Xu-daxia 阅读(219) 评论(0) 推荐(0) 编辑
摘要:单调队列 求长度为M的区间内的最大(小)值 单调队列的基本操作,也就是经典的滑动窗口问题。 求长度为M的区间内最大值和最小值的最大差值 两个单调队列,求出长度为M的区间最大最小值的数组,分别求最大最小值。 求边长为a的正方形内最大值和最小值的最大差值([HAOI2007]理想的正方形) 一个大体的思 阅读全文
posted @ 2018-07-25 08:40 Xu-daxia 阅读(226) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示