• 51nod1056


    题意

    51nod

    做法

    定义:等差数列两个等差数列不同当且仅当任意相邻两项不同
    结论:大小为(n)的集合长度至少为(k)的不同的等差数列个数是(O(frac{n^2}{k^2}))

    证明:
    定义两个位置靠近为距离不超过(frac{n}{k-1})。可以发现相同的等差数列至少存在一对靠近的位置。
    由鸽巢原理可知,一个长度为(k)的等差数列至少有(frac{k-1}{2})对靠近的位置。
    显然集合内靠近的对数不超过(frac{n^2}{k-1}),所以不同的等差数列不超过(frac{n^2}{k-1}/frac{k-1}{2}=O(frac{n^2}{k^2}))

    大小为(n)的集合长度为(k)的等差数列,根据鸽巢原理,有(frac{k}{2})项出现在前(frac{n}{2})项或后(frac{n}{2})

    (T(n,k))(n)集合长度至少为(k)的等差数列:分治左右两边(frac{k}{2})长度的等差数列,然后再扫一下另一边,用hash寻值
    (T(n,k)=2T(frac{n}{2},frac{k}{2})+O(frac{n^2}{k^2} imes k)=O(frac{n^2}{k}logk))

  • 相关阅读:
    图片懒加载
    浅谈javascript的函数节流
    js字符串常用方法详解
    js数组详解
    thinkphp3.2 批量添加数据
    openssl证书及配置
    手机访问PC端
    mui框架(三)
    mui框架(二)
    mui框架(一)
  • 原文地址:https://www.cnblogs.com/Grice/p/12782315.html
Copyright © 2020-2023  润新知