2022年10月17日
摘要: 题目 在序列中找两个不相交的子序列, 子序列满足 max_number - min_number <=k 动态规划,还需要双指针 正反总共扫两遍(f 和 g) 设 f[i] 为[1,i] 满足要求的序列的最大长度 f[i] = max( f[i-1] , i-j+1) #include <iostr 阅读全文
posted @ 2022-10-17 19:08 towboat 阅读(7) 评论(0) 推荐(0) 编辑
摘要: luogu 1886 有一个长为 nn 的序列 aa,以及一个大小为 kk 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 单调队列,顾名思义 假设我们要维护一个单调递增的序列(不一定连续), 当遇到一个数 a[i] , 从 i-1 开始往前剔除元素x( 阅读全文
posted @ 2022-10-17 16:20 towboat 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 对序列{a} ,找一个最长的连续子序列 ,其中没有相同的数字 双指针 容易想到 O(n^2) 的算法,枚举i ,再枚举一个j 尝试向后延伸 注意到 j到达终点(无法延伸) 时, 朴素算法此时执行 i++,j=i 但其实不必,当 [i,j] 可行时,[i+1,j] 也是可行的,所以此时j继续增大即可, 阅读全文
posted @ 2022-10-17 14:36 towboat 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 对于序列{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 阅读全文
posted @ 2022-10-17 14:27 towboat 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 关于二分查找这里记录一下两个函数,即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 阅读全文
posted @ 2022-10-17 12:43 towboat 阅读(20) 评论(0) 推荐(0) 编辑