http://acm.hdu.edu.cn/showproblem.php?pid=4374
Problem Description
Now there is a game called the new man down 100th floor. The rules of this game is:
1. At first you are at the 1st floor....
分类:
其他好文 时间:
2015-02-09 12:52:39
阅读次数:
176
解题思路:
开两个单调队列即可。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
const int maxn = 100000 + 10;
int A[ma...
分类:
其他好文 时间:
2015-02-06 18:49:32
阅读次数:
146
一道比较有意思的题目,我把队列改造了一下然后ac了,后来学数据结构的时候发现我改的队列还有个名词,叫单调队列,心里颇为激动,于是把题目和我的代码发上来与大家分享一下。Description一个阳光明媚的周末,二哥出去游山玩水,然而粗心的二哥在路上把钱包弄丢了。傍晚时分二哥来到了一家小旅店,他翻便全身...
分类:
其他好文 时间:
2015-02-02 00:30:44
阅读次数:
734
题意很简单,给出n,m。查询连续m个数的最大值和最小值。
我用线段树 裸的。有人用的单调队列。
不过很忧伤的是G++ TLE,但是C++ AC了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#includ...
题目大意:给定一个环,要求在这个环上截取长度为偶数且在[L,R]区间内的一段,要求平均值最大
看到环果断倍增
看到平均值最大果断二分答案
看到长度[L,R]果断单调队列
对数组维护一个前缀和,对前缀和维护单调递增的单调队列
每扫过一个数sum[i],将sum[i-L]加入单调队列,再把距离i超过R的点删掉
长度为偶数?对奇数位置和偶数位置分别维护一个单调队列即可
每次找到大于0的...
分类:
其他好文 时间:
2015-01-23 20:09:19
阅读次数:
223
题意:
虽然这道题是汉语的,但是我有必要说一下题意。
就是问你长度为m的区间中,有哪些区间的最大值-最小值
注意!!!如果没有方案输出NONE。
题解:
首先我们可以写一个multiset2400ms+,就是这样,然后貌似还可以写个线段树(不知道有没有人写)
但是正解显然是写两个O(n)的单调队列。
一个维护当前区间最大值,另一个维护最小值。
代码:
#include...
分类:
其他好文 时间:
2015-01-21 20:09:58
阅读次数:
117
题目大意:给定一个序列,求一个最长的子串,使最大值与最小值之差不超过k
从左到右枚举右端点,利用单调队列维护当前区间中的最大值和最小值
如果某一时刻当前区间的最大值和最小值之差超过了k,就向右调整左端点直到差小于等于k为止
时间复杂度O(n)
#include
#include
#include
#include
#define M 3003003
using namespace ...
分类:
其他好文 时间:
2015-01-20 13:47:34
阅读次数:
190
题目大意:给定一个长度为n的序列,求哪些长度为m的区间满足区间内最大值与最小值之差小于等于c
利用单调队列维护区间内的最大值和最小值- - 硬搞就可以了- -
刷刷水题真爽- -
#include
#include
#include
#include
#define M 1001001
using namespace std;
int n,m,c,a[M];
int q_max[M]...
分类:
其他好文 时间:
2015-01-18 22:43:00
阅读次数:
204
最近在做单调队列,发现了最长上升子序列O(nlogn)的求法也有利用单调队列的思想。 最长递增子序列问题:在一列数中寻找一些数,这些数满足:任意两个数a[i]和a[j],若id[len],则直接加入到d的末尾,且len++;(利用性质2) 否则,在d中二分查找,找到第一个比x小的数d[k],并d[k...
分类:
其他好文 时间:
2015-01-17 19:29:38
阅读次数:
204