随笔分类 - 数据结构——单调队列
摘要:https://ac.nowcoder.com/acm/contest/5674/F 做法:伪单调队列按值升序排序,如果够m了就更新答案同时pop队首 #include <bits/stdc++.h> #define inf 2333333333333333 #define N 3000010 #d
阅读全文
摘要:CodeForces - 1208E 经典滑动窗口问题,如果以物体为参考系的话。前缀和优化区间操作 #include <bits/stdc++.h> #define inf 2333333333333333 #define N 1000010 #define p(a) putchar(a) #def
阅读全文
摘要:二分答案出最小距离,dpcheck,单调队列优化dp #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <cmath> #include <cstring> #define inf
阅读全文
摘要:是一个单调队列优化dp的典型例子。f[i]=min(f[j])+1,从[i-k,i-1]中转移过来,维护单调递增的队列,每次取队首元素+1就好了。转移分两种情况,[0,i]或者[i-k,i]这个区间里全是01交替的,那么你只能选f[i-1]也就是最大的,取队尾元素就可以了;否则取队首。 #inclu
阅读全文
摘要:P2659 美丽的序列对于当前的最小值,找到最大的左右边界,然后更新答案。用单调队列确定左右边界,O(n)做法。
阅读全文
摘要:P3512 [POI2010]PIL-Pilots我一开始打的O(n^2)(最坏情况)的算法.枚举区间长度。60分 正解不用枚举区间长度,动态维护+更新答案,O(n).
阅读全文
摘要:洛谷P1886 滑动窗口这个题与P1440 求m区间内的最小值很像,只要在这个题基础上再另维护一个递减的单调队列就好了. #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <cma
阅读全文
摘要:洛谷P1440 求m区间内的最小值 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 以上代表我此时的心情,调了一个小时。。。。只因为顺序,维护一个单调递增队列就好了,这里n很大,输出要优化
阅读全文
摘要:洛谷P1725 琪露诺 交了15遍,差点砸电脑,我对自己无语了,为什么不好好想,耐下心来。。第一感觉是dp,然后没仔细想,瞎觉得好像不是,然后没管住自己,看了标签,果然是dp,后悔自己为何没好好想想。不过自己写出了转移方程,很好,然后编程的时候没有按方程转移,再次无语。。最后确定答案时,范围卡小了,
阅读全文
摘要:洛谷P1714 切蛋糕 O(mn)的枚举,按框的长度枚举,A了两个点,TLE了3个。Ans=max(ans,s[i]-s[j]); 然后进行单调队列优化,ans=max(ans,s[i]-min(s[j));i-m<=j<=i-1;用一个单调递增的单调队列来维护s[j]的最小值,每次直接取队首元素就
阅读全文