首页 > 雾粉与最小值(简单版)
头像 CoolArec
发表于 2024-06-07 21:32:02
雾粉与最小值(简单版) 点击获取更好的阅读体验 思路: 首先我们应该知道一个性质,在一个很长很长的数组里面,如果我们知道了所有长度为6的子数组的最小值的最大值是,那么长度小于6的所有子数组的最小值的最大值一定大于等于。 另外这道题给了minlen和maxlen,实际上我们能用到的只有minlen,和 展开全文
头像 whopxx
发表于 2024-06-07 21:55:40
C题 思路:二分+ST表 处理st表,接着二分每一个a[i]两边能扩展的最大长度,然后记录a[i]所能扩展的最大长度。排序,处理一个后缀最大数组,然后对于每一个询问,二分到第一个位置询问后缀最大值是否符合长度大于l。 #include <bits/stdc++.h> using name 展开全文
头像 ddhw111
发表于 2024-06-08 22:36:29
链接:https://ac.nowcoder.com/acm/contest/84527/C 来源:牛客网 做法 暴力解法就是对于x的每一个位置去遍历最小和最大长度,那么复杂度肯定爆炸,我们先考虑一下最小长度和最大长度的关系,对于一个数来说,如果拓展的最小长度的最小值都小于x,那么最大也只能更小,所 展开全文
头像 土块001
发表于 2024-06-07 22:14:35
条件: 注意到:随着子数组长度的增加,s(min)即子数组最小值会不变或者减小。可以用反证法证明这一 点,此处略。这个性质意味着如果有长度为L1的子数组最小值大于val,那么我们一定可以找到任意 的长度为L (L <= L1)且最小值大于val的子数组。 思路: 我们不是直接求出对于任一长度为 展开全文
头像 TAAT
发表于 2024-08-01 18:20:18
首先理解题意对于每一个查询找一个最小值大于等于val的子数组并且子数组的长度在minlen和maxlen之间。 那么首先对于一个值作为最小值求一个连续子数组的长度,这个就是单调栈的模板题,那么我们可以求出来每一个元素作为最小值得连续子数组的最大长度,然后对于每一查询需要看最小值大于等于val的所有子 展开全文