zoukankan      html  css  js  c++  java
  • 这里全是口胡(蒟蒻的口胡大家就不需要看了吧

    整除分块

    先上板子:

    for(int l=2,r;l<=k;l=r+1)
    {
    	r=k/(k/l);
    }

    复杂度:$Thetaleft ( sqrt{n} ight )$

    证明口胡:

    蒟蒻到今天才明白为什么这么分

    好现在开始证口胡

    整除分块的核心是在一段区间内$left lfloor n/i ight floor$的值是相等的

    有因为$left lfloor n/i ight floor$只有$2cdot sqrt{n}$个取值,所以是$Thetaleft ( sqrt{n} ight )$的.

    考虑在确定了左端点后,如何确定右端点

    先明确我们要选的区间应该满足:$$lfloor n/l floor=lfloor n/r floor$$

    $l$已经确定了,现在的任务是最大化$r$

    $left lfloor n/l ight floor$的意义可以看作$n$中可以被划分出多少个长度为$l$的区间

    问题可以转化为:求$n$可以被划分为多少个长度为$left lfloor n/l ight floor$的区间

    那么答案就显然为:$$left lfloor n/{left lfloor n/l ight floor} ight floor$$

    完结撒花接下来是关于$left lfloor n/i^{2} ight floor$的整除分块

    仍然按上面的思路来

    要选的区间应该满足:$$left lfloor n/l^{2} ight floor=left lfloor n/r^{2} ight floor$$

    仍然最大化$r^{2}$,问题转化为

    求$n$可以被划分为多少个长度为$left lfloor n/l^{2} ight floor$的区间

    答案为:$$left lfloor n/left lfloor n/l^{2} ight floor ight floor$$

    但是要注意,此时求出的是$r^{2}$

    所以应该开根,即为:$$sqrt{left lfloor n/left lfloor n/l^{2}  ight floor ight floor}$$

    然后我打算口胡$n^{2}/i^{3}$的:

    大概率会错,打我的时候别打脸就行

    要选的区间可能应该满足:$$left lfloor n^{2}/l^{3} ight floor=left lfloor n^{2}/r^{3} ight floor$$

    可能仍然最大化$r^{3}$,问题可能转化为

    求$n^{2}$可以被划分为多少个长度为$left lfloor n^{2}/l^{3} ight floor$的区间

    答案可能为:$$sqrt[3]{left lfloor n^{2}/left lfloor n^{2}/l^{3}  ight floor ight floor}$$

    (好丑啊)

  • 相关阅读:
    tcpdump抓包
    openldap quick start guide
    深入理解PHP内核(六)函数的定义、传参及返回值
    深入理解PHP内核(五)函数的内部结构
    mongodb 关系、引用、覆盖索引查询
    mongodb php
    mongodb-$type、limit、skip、sort方法、索引、聚合
    mongodb简介与增删该查
    深入理解PHP内核(四)概览-PHP脚本的执行
    深入理解PHP内核(三)概览-SAPI概述
  • 原文地址:https://www.cnblogs.com/ooovooo/p/11746878.html
Copyright © 2011-2022 走看看