题解: 分为两部分,第一部分和SGU149一样。 第二个部分:给你一个数组,求最长的连续的一段子数组,使得该子数组中的最大值减去最小值不超过M 学到了新姿势。。。用2个单调队列去维护,o(n)时间就行了 具体的可以去看POJ上面的discuss。。 代码: ...
分类:
其他好文 时间:
2016-09-10 20:44:01
阅读次数:
162
斜率优化的题好像都是这样的方程:左边关于j,k的一个(...)/(...)的式子,右边是个只与i有关的可算的数字; 然后把它放到二维坐标轴上,用单调队列维护一个凸壳,O(n)的复杂度; 这道题但是我发现我wrong了,找了程序看了一下,才发现斜率优化还有一点没理解;才明白上午T2能A是由于数据太水, ...
分类:
其他好文 时间:
2016-09-04 23:56:31
阅读次数:
166
一、概念介绍 1、 双端队列 双端队列是一种线性表,是一种特殊的队列,遵守先进先出的原则。双端队列支持以下4种操作: (1) 从队首删除 (2) 从队尾删除 (3) 从队尾插入 (4) 查询线性表中任意一元素的值 双端队列是一种线性表,是一种特殊的队列,遵守先进先出的原则。双端队列支持以下4种操作: ...
bzoj2096[Poi2010]Pilots 题意: 给一个序列和一个最大值,要求找一个最长连续子串,使里面任意两个数相差不超过这个最大值。序列大小≤3000000 题解: 用两个单调队列,分别维护当前区间的最大值和最小值,然后用双指针法。 代码: 20160829 ...
分类:
其他好文 时间:
2016-09-03 22:33:09
阅读次数:
229
01背包:从右往左(因为只能由上一个物品的状态退出,如果从左往右则前边的保存的已是装了这件物品的值)递推,放不放此物品 完全背包:从左往右递推 多重背包:二进制拆包,或用单调队列优化(应该不考吧看的不明白QAQ) 装满背包:只把f[0]设为0 分组背包:把有依赖关系的方程一组,然后在一个阶段了分别d ...
分类:
其他好文 时间:
2016-08-27 11:16:37
阅读次数:
165
最长严格上升子序列 LIS问题,动归时间复杂度o(n2),可以用单调队列优化到o(nlogn) http://blog.csdn.net/dangwenliang/article/details/5728363 #include<iostream> #include<cstdio> #include ...
分类:
其他好文 时间:
2016-08-27 00:27:48
阅读次数:
216
献上黑历史: CE的几次是因为蒟蒻内外循环用同一个量,ce++ WA是因为蒟蒻不会写线段树,写了个单调队列,OK——W TLE是因为蒟蒻脑子有病: while m<>0 do begin ………… end;没有加dec(m); RE是因为蒟蒻数组开太小:第一次开110000;第二次开200000;结 ...
分类:
其他好文 时间:
2016-08-24 14:23:16
阅读次数:
168
bzoj4385[POI2015]Wilcze do?y 题意: 给出一个序列,你能将一个长度不超过d的连续子序列全部变为0,要求和不超过p的最长连续子序列。序列大小≤2000000。 题解: 用两个指针,每次右指针右移时就将新加入元素所能消掉的区间加入单调队列,如果当前区间和减单调队列中最大的元素 ...
分类:
其他好文 时间:
2016-08-23 18:57:51
阅读次数:
129
单调栈 int rear=0; for(int st=1;st<=N;st++) { while(rear>0&&H[que[rear]]>=H[st]) --rear; if(rear==0) le[st]=0; else le[st]=que[rear]; que[++rear]=st; } 单 ...
分类:
其他好文 时间:
2016-08-23 10:13:19
阅读次数:
159
例题 LuoguP1440题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值。若前面的数不足m项则从第1个数开始,若前面没有数则输出0。 裸单调队列 front-tail闭区间 q保存的是a数组中下标 1.更新区间长度 2.插入新元素 ...
分类:
其他好文 时间:
2016-08-22 17:57:37
阅读次数:
166