随笔分类 - 洛谷官方题单
摘要:原题链接:https://www.luogu.com.cn/problem/P1886 题意解读:单调队列模版题。 解题思路: 采用双端队列维护单调的序列,单调队列三部曲: 1、去头,当窗口内元素个数超过k,队头出队 2、去尾,当要加入的元素会破坏单调性,队尾出队 3、入队,将元素的下标存入队列 每
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3467 题意解读:用长方形的海报覆盖建筑的侧面,最少需要的海报数 如上图,左边最少需要3张,右边最少需要4张 解题思路: 可以看出,需要海报数与建筑宽度无关,只与高度有关。 当建筑高度与之前不同时,肯定需要增加一张海报;
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1578 题意解读:在有障碍点的矩形内找到一个最大矩形,内部不能包含障碍点,边缘可以包含障碍点。 解题思路: 求最大矩形的两种算法:极大矩形法、悬线法,背景知识阅读:浅谈用极大化思想解决最大子矩阵问题 关于悬线法,前面在玉
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3143 题意解读:找到两个不相交的最长连续序列,使得序列最大值和最小值差不超过k,求两个最长的序列长度和。 解题思路: 先将所有数从小到大排序,记为a[] 要找到两个不相交的最长连续序列,可以采用下面技巧: 设b[i]表
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P4653 题意解读:选中的灯泡中,某一类较少的总权值减去灯泡数量所得到的收益最大值。 解题思路: 注意,此题关键是:要使得较少的收益最大化 1、要最大化,意味着每次应该选择尽可能大权值的灯泡 2、要使A、B类中较少的收益最
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/UVA11572 题意解读:本质上是要计算最长连续不重复子序列的长度,典型的双指针应用。 解题思路: 通过双指针来枚举子序列,右指针指向的元素每次记录元素出现的次数,可以借助hash数组h[] 如果枚举到的元素出现次数超过1
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2216 题意解读:在矩阵中找n*n正方形里最大值和最小值差值的最小值。 解题思路: 1、枚举法 直接枚举所有n*n的正方形的位置,然后在遍历求最大值、最小值,复杂度为O(n^4),显然不能通过。 2、二维单调队列 既然是
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2032 题意解读:求滑动窗口内的最大值,典型的单调队列应用。 解题思路: 单调队列的三部曲: 1、去头。已存入的元素个数超过k,则去头。注意队列里存的是元素下标,只需要用当前下标减去队头元素来判断即可。 2、去尾。根据单
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1950 题意解读:在一张n*m个格子的纸上,从没有画过的格子中剪出长方形的方案数。 解题思路: 1、暴力做法 枚举所有的子矩阵O(n^4),然后用二维前缀和计算子矩阵的和,通过和来判断子矩阵是否全部是'.'。 2、优化做
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2866 题意解读:每个牛能看到的右边比他矮的牛,直到有比他高的挡住为止,因此只用找每个牛右边第一个比他高的牛的位置即可计算中间比他矮的有多少。 解题思路: 典型的单调栈应用,注意,常规的单调栈可以用来: 1、找每个数左边
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P4147 题意解读:找到一个只包含'F'的最大的子矩形。 解题思路: 方法1:设R为0,F为1,先计算二维前缀和,再枚举所有子矩形左上角(x1,y1)、右下角(x2,y2),计算子矩形的区间和,更新最大值,只能得到部分分。
阅读全文
摘要:参考:https://www.cnblogs.com/jcwy/p/18233382
阅读全文
摘要:参考:https://www.cnblogs.com/jcwy/p/18245783
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1115 题意解读:最大连续子序列的和。 解题思路: DP的做法可参考:https://www.cnblogs.com/jcwy/p/18144124 也可以采用双指针来枚举: i从1开始,j=i 用j来枚举连续序列,如果
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1638 题意解读:在n个数中,选出a、b两个端点,使得a~b之间不同的数字为m,且b-a最小。 解题思路: 要寻找最小的包括所有数字的区间,可以采用双指针算法 1、设i,j分别是左右指针 2、如果当前区间内不同数字个数不
阅读全文
摘要:此题前面已经讲述了三种做法:二分、双指针、map 请参考题解: https://www.cnblogs.com/jcwy/p/18043197 https://www.cnblogs.com/jcwy/p/18086618
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P5937 题意解读:已知长度为n的01序列,给出m个判断,每个判断认为l~r之间1的个数是偶数或者奇数,计算前多少个判断是正确的。 解题思路: 先用前缀和思想来思考本题:假设s[i]是序列前i个数的和 对于每一个判断,有两
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P4375 题意解读:计算双向冒泡排序一共要进行多少趟。 解题思路:一道思维难度较大的题! 由于数据各不相同,先将其离散化处理从1~n的数,如果每个数不在自己的位置则是无序。 对于双向冒泡排序,对于第x个位置来说,每一趟正向
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1904 题意解读:给出(左端点,高度,右端点)表示的若干建筑,要输出其轮廓,所谓轮廓就是每个点被覆盖的最高建筑的高度所描绘的线。 解题思路: 如果能计算每个点被覆盖的最高建筑的高度,用数组h[10005]保存,那么输出轮
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3029 题意解读:不同的坐标位置有不同种类的牛,要计算一个最小的区间,包括所有种类的牛。 解题思路: 由于坐标位置不连续,并且数值范围较大,因此需要离散化处理,将坐标处理成1~n连续分布 由于种类编号数值范围也比较大,也
阅读全文