
单调队列优化DP
ehi11
这个作者很懒,什么都没留下…
展开
-
Sequences hoj 单调队列优化DP
/*可以用单调队列优化的DP一般是用于限定长度的区间,且区间有整体移动的趋势。即每一个元素是逐次进出区间,且只有一次。这样的题目一般都是有比较明显的模板。下面的这个就是集训的时候学长给的模板。感觉挺好写和理解。不过综合对比时间效率。感觉不一定是最高效的。 题意是给你固定的区间长度范围。求该序列首端和末端的和最大值。 简单。维护一个单调队列进行优化即可。有些细节看代码的注释。*/ #include原创 2012-08-08 22:12:32 · 744 阅读 · 0 评论 -
hdu Max Sum of Max-K-sub-sequence 单调队列优化DP
/*求一个环的连续最大子段和。并且输出该最大字段和的和,启示位置和终止位置。 s[i]-s[j]课表示任意最大字段和。当枚举i的时候,只需要求出此时最小的s[j]即可。 此时可以维护一个单调上升的队列。每次取队首元素即可为s[j]的最小值。*/ #include #include #define maxn 200001 struct node { int num,id; nod原创 2012-08-09 09:39:55 · 1553 阅读 · 0 评论 -
Buy Tickets hoj 单调队列优化DP的简单应用
/*题意是问能相互看见的人有多少对。 只需要建一个单调递减的队列。枚举每一个i时,对前i-1个元素形成的单调队列里找>=a[i]的元素的个数即可。简单、*/ #include #include #define maxn 500001 using namespace std; int q[maxn]; int a[maxn]; int main() { int n; while(原创 2012-08-08 22:13:50 · 577 阅读 · 0 评论 -
Sliding Window poj 单调队列的简单应用
/*算是单调队列入门吧。简单。根据ppt模板易得答案。*/ #include #include #define maxn 1000001 using namespace std; struct node { int num,id; node(){} node(int _num,int _id) { num=_num; id=_id原创 2012-08-08 22:15:10 · 680 阅读 · 0 评论