• Stern-Brocot Tree (SB树)0205听课笔记2
    • 例题:BZOJ2852:给两个有理数 a,ba,b, 求最小的正整数 kk, 使得 (ak,bk)(ak, bk) 里有整数。aa, bb 整数部分不超过 2312^{31}, 小数位数不超过 300300 位。
      • 0205听课笔记2

莫比乌斯反演

  • 数论函数:定义域在正整数域上的函数。
  • 积性函数:(a,b)=1(a,b)=1,则f(ab)=f(a)f(b)f(ab)=f(a)f(b)φ,μ,dk(n)\varphi,\mu,d_k(n)最后那个是除数函数)
  • 完全积性函数:f(ab)=f(a)f(b)f(ab)=f(a)f(b)I,id,ϵI,id,\epsilon
  • Dirichlet卷积。(fg)(n)=dnf(d)g(nd)(f*g)(n)=\sum_{d|n}f(d)g(\frac nd),满足交换律结合律分配律。且如果f,gf,g为积性函数,那么fgf*g也为积性函数。
  • e(n)=dnμ(d)=[n==1]e=μIe(n)=\sum_{d|n}\mu(d)=[n==1]\\e=\mu*I
  • f(n)=dng(d)f(n)=\sum_{d|n}g(d),则g(n)=dnf(d)μ(nd)g(n)=\sum_{d|n}f(d)\mu(\frac nd)
    f=gIfμ=gIμ=gf=g*I\to f*\mu=g*I*\mu=g
  • 简单例题:i=1nj=1mf(gcd(i,j))\sum_{i=1}^n\sum_{j=1}^mf(gcd(i,j))
    • =i=1min(n,m)g(i)nimi=\sum_{i=1}^{\min(n,m)}g(i)\lfloor\frac ni\rfloor\lfloor\frac mi\rfloor,其中g(i)=diμ(d)g(i)=\sum_{d|i}\mu(d)
  • 简单例题:SPOJ LCMSUM0205听课笔记2
    • 0205听课笔记20205听课笔记2
  • 0205听课笔记2n500000T500000n\le 500000,T\le 500000
    • 显然答案等于d=1nd2f(nd)\sum_{d=1}^nd^2f(\lfloor\frac nd\rfloor)f(n)=i=1nj=1nlcm(i,j)f(n)=\sum_{i=1}^n\sum_{j=1}^nlcm(i,j)
      0205听课笔记20205听课笔记2
  • 一个人的数论:0205听课笔记2
  • 怎样跑得更快:n105;c,d109n\le 10^5;c,d\le 10^9,现有序列bb满足bij=1ngcd(i,j)clcm(i,j)dzj(mod 998244353)b_i\equiv \sum_{j=1}^n \gcd(i,j)^c\cdot lcm(i,j)^d\cdot z_j(mod\ 998244353),求zz,无解输出1-1

杜教筛

都会就略了。上个图。

0205听课笔记2
第一个式子变化基于f(x)g(y)f(x)g(y)会有贡献当且仅当xynxy\le n

Min_25筛

0205听课笔记20205听课笔记20205听课笔记20205听课笔记20205听课笔记20205听课笔记2

  • GCD Array
    0205听课笔记2
    建立辅助数组ff使得a(i)=jif(j)a(i)=\sum_{j|i}f(j)
    [(x,n)==d]v=[(xd,nd)==1]v=vkxd,ndμ(k)=knd,dkxvμ(k)[(x,n)==d]\cdot v\\=[(\frac xd,\frac nd)==1]\cdot v\\=v\cdot\sum_{k|\frac xd,\frac nd}\mu(k)\\=\sum_{k|\frac nd,dk|x}v\cdot\mu(k)
    每次修改相当于枚举kndk|\frac nd,然后给f[dk]+=vμ(k)f[dk]+=v\cdot \mu(k)
    查询答案为i=1xa(i)=i=1xdif(d)=d=1xf(d)xd\sum_{i=1}^xa(i)=\sum_{i=1}^x\sum_{d|i}f(d)=\sum_{d=1}^xf(d)\lfloor\frac xd\rfloor
    可以分块统计,用树状数组维护ff的前缀和。

  • 简单题:S(n)=i=1nj=1nd(ij)S(n)=\sum_{i=1}^n\sum_{j=1}^nd(ij)n1010n\le10^{10}

  • 0205听课笔记2

    • μ2(i)=d2iμ(d)\mu^2(i)=\sum_{d^2|i}\mu(d),所以i=1nμ2(i)=i=1nd2iμ(d)=d=1nμ(d)nd2\sum_{i=1}^n\mu^2(i)=\sum_{i=1}^n\sum_{d^2|i}\mu(d)=\sum_{d=1}^{\sqrt n}\mu(d)\lfloor\frac n{d^2}\rfloor.
    • 暴力是根号的,整除分块一下能跑过101810^{18}。整除分块的块数是O(n13)O(n^{\frac 13})因为d<n13d<n^{\frac 13}只有n13n^{\frac 13}种;d>n13d>n^{\frac 13}时,nd2n13\lfloor\frac n{d^2}\rfloor\le n^{\frac 13}。最后再加上杜教筛的时间复杂度。最后时间复杂度算出来是O(n37)O(n^{\frac 37})

相关文章: