• 从不浪费——分治总结


    从不浪费——分治总结

    充分利用题目的性质,充分利用已知的信息,就是分治降低时间复杂度的保证。

    序列上的纯粹分治

    • 例一CJOI2019矩阵级数
      • 考虑式子的含义,是不是(Sigma^{n} A^i =Sigma^{frac{n}{2}}A^i+A^{frac{n}{2}}Sigma^{frac{n}{2}}A^i)
      • 直接递归处理两边即可,时间复杂度(O(logk))
    • 例二CJOI2019Paiting Fence
      • 考虑上色到最底的那个后,就把问题分成序列上的子问题了。
      • 最多"涂到最底"层数是(logn)的,每层都要(O(n))就好了。
    • 例三CJOI2019Cipher
      • 这类感觉像数学题的题目,实际上可以分治。因为数字就是很多别的数的和,而且显然牵涉到数学我们可以用乘法或者次方来优化。甚至倍增。

    小小结

    我们发现,如果处理了序列的左边,就对序列的右边有帮助的话,可以直接分治,分治的复杂度与分治深度和每次合并的复杂度有关。涉及到数学的问题也可以用这种方法。

    平面点分治


    考虑到序列可以看做只有(x)轴的平面,是不是可以用序列分治类似的办法来解决坐标系的问题呢?


    • 例一平面最近点对
      • 考虑到左右区间贡献的答案可以帮助我们确定枚举的起点或者终点。
      • 考虑到这类问题如果在序列上怎么做
    • 例二[CJOI2019Chebnear]
      • 和例一是一样的,总是考虑最坏情况做复杂度分析。

    然而凉心出题人会把问题出到树上(dots dots)

  • 相关阅读:
    vsftp
    数据类型
    第三篇:表相关操作
    第二篇:库相关操作
    第一篇: 初识数据库
    五 python并发编程之IO模型
    四 python并发编程之协程
    Python GIL
    三 python并发编程之多线程-重点
    三 python并发编程之多线程-理论
  • 原文地址:https://www.cnblogs.com/winlere/p/10360174.html
Copyright © 2020-2023  润新知