zoukankan      html  css  js  c++  java
  • 从不浪费——分治总结

    从不浪费——分治总结

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

    序列上的纯粹分治

    • 例一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)

  • 相关阅读:
    第一阶段意见评论
    软件工程--第十一周学习进度
    第一阶段SCRUM冲刺 10
    冲刺(三)
    冲刺(二)
    冲刺(一)
    梦断代码阅读笔记01
    第八周总结
    NABCD项目分析
    第七周总结
  • 原文地址:https://www.cnblogs.com/winlere/p/10360174.html
Copyright © 2011-2022 走看看