返回顶部

随笔分类 -  尺取

摘要:题意:有一长度为$n$的数组,问有多少子数组的最大值和最小值之差大于$k$. 题意:看数据范围,这题比较稳的写法应该是$O(n)$,考虑一个区间,如果当前区间的最大值最小值之差已经大于$k$了,那么我们再去移动右区间也一定是合法的,也就是没有意义的,那么此时固定左区间,右贡献为$n-r+1$,之后我 阅读全文
posted @ 2021-08-02 02:04 _Kolibri 阅读(270) 评论(0) 推荐(0)
摘要:题意:给你一长度为$n$的数组,有一长度为$k\ (1\le k \le n)$的区间不断从左往右扫过这个数组,总共扫$n$次,每次扫的区间长度$k=i$,在扫的过程中,每次取当前区间内的最小值,存到v中,问每次扫完后v中的数是否能构成一个序列. 题解:我们首先特判区间长度$1$和$n$的情况,这很 阅读全文
posted @ 2020-12-08 19:11 _Kolibri 阅读(259) 评论(0) 推荐(1)
摘要:题意:有$n$个点往下落,你可以在最下面放两个长度为$k$的板子,问做多能接到多少个点. 题解:这题给纵坐标$y$完全没有用,我们先对横坐标$x$排序,然后从左边开始枚举,用$l[i]\(记录\)[1,i]$中,一块板子最多能接到的点,然后再从右开始枚举,用$r[i]\(记录\)[i,n]$中,一块 阅读全文
posted @ 2020-09-05 20:40 _Kolibri 阅读(132) 评论(0) 推荐(0)
摘要:题意:有$n$个吃鸡玩家,在某个时间段给你他们每个人的杀敌数,判断数据是否合法,并输出每个人对应的杀敌情况. 题解:刚开始写的是直接暴力枚举,向后去找并且标记,然后存到vector最后输出,结果一直MLE,后来发现可以用双指针来搞.首先只要总杀敌数不大于$n-1$,那么就永远都是合法的,然后不难发现 阅读全文
posted @ 2020-08-14 11:54 _Kolibri 阅读(129) 评论(0) 推荐(0)
摘要:题意:从一个数组中尽可能多的选数,要求所选的每个数之间的差不大于$5$. 题解:先排序,然后双指针尺取,如果能取,则移动右指针,维护最大值,否则移动左指针即可. 代码: #include <iostream> #include <cstdio> #include <cstring> #include 阅读全文
posted @ 2020-06-15 20:21 _Kolibri 阅读(177) 评论(0) 推荐(0)