摘要:
题目 在序列中找两个不相交的子序列, 子序列满足 max_number - min_number <=k 动态规划,还需要双指针 正反总共扫两遍(f 和 g) 设 f[i] 为[1,i] 满足要求的序列的最大长度 f[i] = max( f[i-1] , i-j+1) #include <iostr 阅读全文
摘要:
luogu 1886 有一个长为 nn 的序列 aa,以及一个大小为 kk 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 单调队列,顾名思义 假设我们要维护一个单调递增的序列(不一定连续), 当遇到一个数 a[i] , 从 i-1 开始往前剔除元素x( 阅读全文
摘要:
对序列{a} ,找一个最长的连续子序列 ,其中没有相同的数字 双指针 容易想到 O(n^2) 的算法,枚举i ,再枚举一个j 尝试向后延伸 注意到 j到达终点(无法延伸) 时, 朴素算法此时执行 i++,j=i 但其实不必,当 [i,j] 可行时,[i+1,j] 也是可行的,所以此时j继续增大即可, 阅读全文
摘要:
对于序列{a} 求其连续子序列{b} 满足 b[i]>=i,有几个? 比如 1 4 6 7 3 , [3],[1,4] [6,7,3]都是合法的 双指针的题 #include <iostream> #include <algorithm> using namespace std; const int 阅读全文
摘要:
关于二分查找这里记录一下两个函数,即lower_bound(l,r) , upper_bound(l,r) ,分别是求: 1. 大于等于x的第一个位置 2.大于x的第一个位置 //lower_bound() int l_bound(int x,int y,int v){ while(x<y){ in 阅读全文