20.5.16总结

20.5.16总结

得分

估分:100+100+70

实际:100+100+100

T3没被卡。。。

T1

大水题。。。

结果很多人居然只打了nm^2的???

首先显然二分答案

然后我们可以用字符串哈希判断有没有重复的子串

T2

这题考的是阅读理解。。。

关键要看到每种颜色在整个过程只能用一次。

于是我们就可以分治了,在一个分治区间第一次出现的数字肯定是最先涂的颜色

预处理某个颜色后面的第一个同颜色点的位置,还有某种颜色最后出现的位置

T3

挺有意思的题

题目要求每个区间的最大的三个数的乘积之和,思路肯定是找到那三个数,然后计算有多少个区间的最大的三个数就是它们

我的想法是从大到小加点,用set维护一个点左边和右边的大于它的数,分别要找三个。O(nlogn)

zys提供了一种O(n)的做法

首先用单调栈求出每个点(设为x)左右第一个大于它的数(l1,r1)的位置,接着我们要求左右第二个大于它的数(l2,r2)的位置,把x的询问挂在l1,r1上面,由于l2-l1和r1-r2之间的数都小于x,所以当扫到x的时候,l2r2都还在单调栈上面。类似的求出l3r3

小结

  1. 认真读题,逐字逐句看题
  2. 求区间贡献考虑分治或者枚举有贡献的点的做法
原文地址:https://www.cnblogs.com/leason-lyx/p/12900826.html