题目:给你一排建筑的长度和高度,求最长的上横高度和下降高度。
分析:dp,最大上升子序列。
说明:有长度,不能直接用单调队列优化。
#include
#include
#include
using namespace std;
int h[2000],w[2000],u[2000],l[2000];
int main()
{
int T,n;
while (~scanf("%...
分类:
其他好文 时间:
2014-10-19 18:42:40
阅读次数:
192
题目大意:一个人有T元,最大可以持有的股票数量是maxp,交易必须隔w天进行.告诉每天可以买股票的数量和买入价格,以及每天可以卖出股票的数量和卖出价格,问最后最大的收益是多少.思路:状态可以定义为:f[i][j]第i天,手持j股且完成当天的操作的最大收益.考虑这一天的操作,一共有三种,(1)什么都不...
分类:
其他好文 时间:
2014-10-16 19:35:43
阅读次数:
237
题目大意:给你一个数字序列,然后给一个从左到右滑动的窗口,窗口的长度是k,一次向右移动一格,每次输出这个窗口中最大的数和最小的数,问最后输出的序列是什么.思路:维护两个单调队列,一个维护最大值,一个维护最小值.因为窗口移动的方向是一直朝一个方向的,所以可以用单调队列维护这个最大值,队列中记录的是最大...
分类:
其他好文 时间:
2014-10-16 16:41:12
阅读次数:
172
https://oj.leetcode.com/problems/trapping-rain-water/这道题使用单调队列能够O(n)时间解决。维护一个降序排列的单调队列。如果Ai>A[que.front]就说明能够使用que.front作为顶部计算一次积水。当从0-n时,须注意队列中还有元素。需...
分类:
移动开发 时间:
2014-10-14 17:22:58
阅读次数:
261
题目大意:给定一个m*n的地图,一些点有障碍物,钢琴初始在一个点,每个时间段可以选择向给定的方向移动一段距离,求最长路径长
朴素DP的话,我们有T个时间段,每个时间段有m*n个点,n个时间,一定会超时
考虑到一个时间段所有的更新操作都是相同的,我们可以考虑单调队列优化
设队尾为(x,y),新插入的点为(x',y'),那么当Distance( (x,y) , (x',y') )
四遍单调队...
分类:
其他好文 时间:
2014-10-14 15:06:31
阅读次数:
227
解题思路:
维护一个递增的单调队列和一个递减的单调队列,基础题。
代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
#define FOR(i,x,y) for(int i=...
题目描述:http://poj.org/problem?id=2823思路: 求某个区间的最大与最小值,可以使用两个单调队列,由于需要在队列前删除元素和在队列后增加元素,所以考虑使用双端队列; 在双端队列中记录元素的下标,另外,双端队列为单调队列,满足单调非递增或单调非递减,则队列第一个元素为区.....
第一题:题目大意:多重背包。解题过程:1.二进制拆分。最慢的点0.5s。2.单调队列优化会更快,不过我不会。。第二题:题目描述:给定一个n×m的矩阵,记录左上角为(1,1),右下角为(n,m),现在从(1,1)开始取数,每次只能向下或向右移动一个单位,最终到达(n,m),我们把路径上所有的数相乘,结...
分类:
其他好文 时间:
2014-10-02 15:36:53
阅读次数:
327
给一个由小写字母构成的字符串S,问有多少个子串满足:在这个子串中每个字母的个数都不超过K。数据范围:1#include #include #include #include #include #include #include #include #include using namespace st...
分类:
其他好文 时间:
2014-09-29 23:46:41
阅读次数:
346
概要:对于维护信息具有单调性的性质或者问题可以转化为具有单调性质的模型的题,我们可以考虑用单调栈或单调队列。技巧及注意:技巧很多,只要能将问题转化为单调性问题,就好解决了。当维护固定长度的单调区间,我们考虑用单调队列,如【BZOJ】3314: [Usaco2013 Nov]Crowded Cows(...
分类:
其他好文 时间:
2014-09-28 20:52:25
阅读次数:
153