zoukankan      html  css  js  c++  java
  • 类欧几里得小记

    前言

    每次看了很快就忘了,干脆写一篇博客,来加深记忆。

    定义

    [f(a,b,c,n)=sum_{i=0}^{n}lfloordfrac{ai+b}{c} floor ]

    [g(a,b,c,n)=sum_{i=0}^{n}ilfloordfrac{ai+b}{c} floor ]

    [g(a,b,c,n)=sum_{i=0}^{n}{lfloordfrac{ai+b}{c} floor}^2 ]

    [m=lfloordfrac{an+b}{c} floor ]

    一、f(a,b,c,n)

    当a>=c时,(=f(a\%c,b,c,n)+lfloordfrac{a}{c} floor*n(n+1)/2)
    当b>=c时,(=f(a,b\%c,c,n)+lfloordfrac{b}{c} floor*(n+1))
    然后

    [=sum_{i=0}^{n}lfloordfrac{ai+b}{c} floor ]

    我们将(dfrac{ai+b}{c})当作一条以i为自变量的直线,
    这里写图片描述
    于是原式就等于这个直角梯形内的整点个数,

    [=sum_{i=0}^{n}sum_{j=1}^{m}[lfloordfrac{ai+b}{c} floor>=j] ]

    [=sum_{i=0}^{n}sum_{j=0}^{m-1}[lfloordfrac{ai+b}{c} floor>=j+1] ]

    [=sum_{i=0}^{n}sum_{j=0}^{m-1}[ai+b>=jc+c] ]

    [=sum_{i=0}^{n}sum_{j=0}^{m-1}[ai+b>jc+c-1] ]

    [=sum_{i=0}^{n}sum_{j=0}^{m-1}[ai>jc+c-b-1] ]

    [=sum_{i=0}^{n}sum_{j=0}^{m-1}[i>lfloordfrac{jc+c-b-1}{a} floor] ]

    [=sum_{j=0}^{m-1}sum_{i=0}^{n}[i>lfloordfrac{jc+c-b-1}{a} floor] ]

    [=sum_{j=0}^{m-1}(n-sum_{i=0}^{n}[i<=lfloordfrac{jc+c-b-1}{a} floor]) ]

    [=nm-f(c,c-b-1,a,m-1) ]

    时间复杂度类似与扩展欧几里得。

    二、g(a,b,c,n)

    //坑

  • 相关阅读:
    php 邮件发送开发前期配置
    抛弃传统的curl,使用Guzzle
    TP5.1 分页(带参数传递)
    tp5.1 模型 where多条件查询 like 查询
    xpath 和 jsonpath 解析
    python分布式爬虫框架 --- scrapy-redis
    python爬虫框架——scrapy
    python爬虫 --- urllib
    mysql事务和锁
    mysql数据储存
  • 原文地址:https://www.cnblogs.com/chen1352/p/9099486.html
Copyright © 2011-2022 走看看