传送门
别出心裁的一道sa,想了好久。。
首先求出height数组 考虑如果只求一个r的话怎么做 显然可以将height数组分组,每个组里都是height>=r的,然后对于每一个组计数+取max 那么如果有多个r呢?
显然r大的要比r小的分的组少一些 换句话说就是如果已经将r分组,再将r-1分组的时候,可以往上一次分的组里插进去一些 也就是说可以r可以在r+1的基础上统计 先将height排序,然后从大到小枚举,每一次将相同的r全部加入进去 不同的组可以用并查集维护(size,最大次大,最小次小),合并的时候只需要分别减去合并之前的答案然后再加上合并之后的答案就行了,求最大值不用减只用取max
时间复杂度
新闻热点
疑难解答