zoukankan      html  css  js  c++  java
  • 关于[x/y]一些小想法

    [x/y],即x除以y下取整

    (不会LATEX)

    1.对于给定的x,对于所有的1<=y<=x,

    [x/y]一共有√x种取值。

    证明:

    对于y<=√x,y有根号种,所以值最多根号种。对于y>√x,[x/y]<√x, 最多有根号种。

    这种思想在根号分块处理的时候也很常见。

    (必备技能:)

    √x求[x/y]的和。

    小于√x暴力枚举y。

    大于√x,值只有√x中,所以暴力枚举[x/y]的值k,

    等于k的区间长度就是,[x/(k-1)]+1 ~ [x/k],可以计算。

    [x/y]再乘个什么数,也可以考虑转化成[x/y]的和,再计算。

    2.数论分块。

    不会留坑。

    3.哪里会用到[x/y]呢?

    反演(我不会)

    a%b=a-[a/b]*b

    可以考虑。尤其在之前出现类似的[a/b]时

    在exgcd证明,裴属定理证明也用到过。

    毕竟a%b不这么处理怎么办?

    例题:9.10模拟赛T1mmt

    4.如果我们要枚举连续的一些x,

    假如y是固定的,[x/y]的值会发生变化,

    当且仅当,x是y的倍数时,在x位置会比之前大1

    所以,还有的启发是:若x|y,那么对于z∈(x~x+y-1),[z/y]=[x/y]

    可以枚举y的倍数,在O(up/y)的时间内算出[x/y]的值。

    如果y也从1~up,那总复杂度就是O(uplogup)的。

    如果x不变,y从1~up,那就是上面的"必备技能”处理的了。

    例题:EOJ 262 润清的烦恼

    5.还有一个什么公式:[x/y/z]=[[x/y]/z]

    可以直接根据[x/y]的定义,把x=[x/y]*y+x%y引入余数x%y=q

    即可证明。

  • 相关阅读:
    javascript数组
    Javascript prototype理解
    Javascript中的类的创建
    Div拖动效果
    javascript, position
    getSelection();
    网页的宽和高
    javascript apply & call
    Hibernate数据丢失更新问题及解决 凡人
    招聘软件/网页UI设计师
  • 原文地址:https://www.cnblogs.com/Miracevin/p/9633234.html
Copyright © 2011-2022 走看看