zoukankan      html  css  js  c++  java
  • 模拟44 题解

    A. D

    显然对于每一个点,它左侧的区间gcd是单调不增的。

    因为gcd一旦减少至少减半,不同取值不超过log个。

    从左到右扫一遍的过程中,维护一个单调的pair数组。

    第一维为区间gcd值,第二维为左端点下标。

    显然我们只关心同一个gcd值最小的左端点。

    不断维护一下这个元素个数不超过log的单调数组,

    暴力修改更新答案就可以。

    复杂度貌似是$O(nlog^2n)$的,

    然而如果均摊的话,每个数调用gcd是log级别的,总复杂度应为$O(nlogn)$。

    B. E

    最近做了很多这类关于区间的题,大致思路都是排序后贪心。

    还是首先将2n个数排序。

    考虑2n个数中的最小值和最大值。

    如果最值不在同一组中,

    那么有两种情况:

    1.最值被分到R。

    那么另一个组应该取得极差最小的n个属于不同组元素。

    显然的单调指针问题,思路类似数颜色的莫队做法。

    2.最小值被分到R,最大值被分到B。

    则一个最小值和一个最大值固定了。

    显然使R取得每组的最小值,B取得每组的最大值。

    任何交换都使答案更差。

    C. F

    首先是最弱智的dp,考虑两个指针的位置。

    稍微思考一下发现只要一个指针的位置就可以了,因为另一个指针的位置一定指向前一个操作应值的位置。

    然后dp就省掉了一维,稍微观察一下转移,

    一个是区间加法,一个是对各点dp值加减下标后取个最值,线段树优化就完了。

  • 相关阅读:
    Apache2的安装
    JVM(9) 程序编译及代码优化
    Java基础(43)Queue队列
    Java基础(42)AbstractSet类
    OptimalSolution(10)--日常
    OptimalSolution(9)--其他问题(1)
    OptimalSolution(9)--其他问题(2)
    OptimalSolution(8)--位运算
    OptimalSolution(7)--大数据和空间限制
    golang教程汇总
  • 原文地址:https://www.cnblogs.com/skyh/p/11532860.html
Copyright © 2011-2022 走看看