单调队列
nooooteY
这个作者很懒,什么都没留下…
展开
-
POJ 2823 Sliding Window
题意:n个数,用长度为k的框从左往右逐个框进k个数,输出每次框进的数的最大数和最小数。分析:裸的单调队列。此题输入输出量很大,用scanf和printf,C++编译器。用G++会TLE。不过用输入输出加速外挂会提高速度。Source Code:#include#includeusing namespace std;const int maxn=1000010;struct原创 2013-03-22 23:34:44 · 761 阅读 · 0 评论 -
单调队列模板
#includestruct Node{ int val,index;}que[100];int main(){ int ans[100]; int N,K,i,head,tail,x; scanf("%d %d",&N,&K); head=tail=0;//tail指向队尾元素的下一个位置 for(i=0;i<N;i++){ scanf("%d",&x); if(原创 2013-03-23 22:19:05 · 978 阅读 · 0 评论 -
POJ 3250 Bad Hair Day
链接:http://poj.org/problem?id=3250题意:N头牛面向右排成一排,每头牛可以看到它前面的比它身高严格矮的牛。给出每头牛的身高,求出所有牛能看到的牛的总数。分析:单调队列。牛i能看到的牛的数量是j-i-1(设j>i,且牛j是第一个身高大于或等于牛i的牛)。所以每当入队一头牛,就计算它后面比它矮的牛能看到的牛的数量,并将该牛T掉(因为它能看到的牛的数量已经计算出来了原创 2013-03-25 21:03:14 · 823 阅读 · 0 评论 -
HDU 3415 Max Sum of Max-K-sub-sequence
链接:http://acm.hdu.edu.cn/showproblem.php?pid=3415题意:一个共有N个整数的环形串,计算最多有K个整数的连续子串的和。分析:单调队列。用sum[i]存储前i个整数的和,则i+1到j之间的整数和就是:sum[j]-sum[i]。对于环形情况的处理,只要在整数串最后补上前K个数就可以对其进行线性串的处理。单调队列的队首存放当前K+1个SUM值的最小原创 2013-03-26 12:39:46 · 709 阅读 · 0 评论 -
单调队列优化DP
最近做了一些单调队列优化DP的题目,现在总结一下。遇到这类题目首先要能够想出朴素的DP状态转移方程,然后对其进行相应的转化,对于已知的部分用单调队列来维护。以下附几道题目,部分题解摘自别人的解题报告。(自己懒的写啦。其实是我觉得别人写的比我好T_T) HDU 3401 Trade http://acm.hdu.edu.cn/showproblem.php?pid=3401 题意原创 2013-04-12 11:07:10 · 2224 阅读 · 0 评论