首页 > 其他分享 >数论分块

数论分块

时间:2024-03-24 20:55:48浏览次数:30  
标签:lfloor frac 分块 数论 rfloor 左端

数论分块

part 1 数论分块是什么

一道例题引入uva H(n)
题目大意是给定一个n,求\(\sum^{n}_{i=1}\lfloor\frac{n}{i}\rfloor\)
如果不能用\(O(n)\)的时间复杂度来算,能用什么办法?

数论分块!!!

在一个特定的区间内,\(\lfloor\frac{n}{i}\rfloor\)算出的数字是一样的。如下图颜色相同部分的区间

显然,我们可以把相同的\(\lfloor\frac{n}{i}\rfloor\)看成一个整体,用这个区间的右端-左端+1乘上它,就为这个区间的答案。

part 2 如何求左端右端

  • 左端右端都是整数,左端就等于上一个右端+1。
  • 由于\(\lfloor\frac{n}{l}\rfloor = \lfloor\frac{n}{r}\rfloor\leq\frac{n}{r}\),所以\(r\leq\frac{n}{\lfloor\frac{n}{l}\rfloor}\),即\(r=\frac{n}{\lfloor\frac{n}{l}\rfloor}\)

标签:lfloor,frac,分块,数论,rfloor,左端
From: https://www.cnblogs.com/wrl2010/p/18093034

相关文章

  • 数论(证明)
    1.同余1.1同乘性\({\displaystylea\equivb{\pmod{m}}}\)\({\displaystylec\equivd{\pmod{m}}}\)则\({\displaystylea*c\equivb*d{\pmod{m}}}\)证明\({a=k_1m+x}\);\({b=k_2m+x}\)\({c=k_3m+y}\);\({d=k_4m+y}\)\({a*c=k......
  • 分块学习笔记
    引入分块,顾名思义,把需要的维护的数据分成多个块来维护,思想为大段维护,小段朴素。区间修改,区间求和是一道线段树的板子,其复杂度为\(O(n\logn)\),考虑分块如何做。将序列分块,然后对于操作来说,中间的块直接查询和,然后将两边剩余的加起来即可。复杂度最优为\(O(n\sqrtn)\),不难证......
  • 数论小记
    做到就会补进来>w<\[d(ij)=\sum_{x|i}\sum_{y|j}[\gcd(x,y)=1]\]其中\(d\)是约数个数,证明如下:考虑\(x,y\)造就的\(xy=d\)的贡献,显然覆盖完全,那么我们现在需要一个\(d\)只能有一种产生贡献的方式。考虑一个质数\(p\)在\(x,y,d\)中的幂次分别为\(x',y',d'\),在\(......
  • 【博客】分块
    分块前言顾名思义分块就是将要维护的数据分成多个块来进行操作涉及整块的直接在块上操作涉及块中的暴力操作暴力即优雅分块是在线算法一般跟区间有关系算法如果一个序列长度为\(n\)我们一般取\(\sqrt{n}\)为一个块的长度这样块的数量也是\(\sqrt{n}\)原理如下设......
  • cuda从入门到精通(六)共享内存和循环分块实现CUDA矩阵乘
    本文系转载,出处:https://mp.weixin.qq.com/s/1w1WFPoUEvVECsurqmvJDw在CUDA编程中,共享内存和循环分块(looptiling)是两种常见的优化策略,它们可以帮助我们提高矩阵乘法的性能。共享内存(SharedMemory):在GPU中,每个线程块(block)都有自己的共享内存。与全局内存相比,共享内存的访问......
  • 【学习笔记】分块/莫队
    众所周知,分块是一种比较暴力的数据结构。虽说分块效率不高,但它能处理一些树状数组和线段树难以维护的东西(尤其是不具备可拆分性和可合并性的东西)。分块遵循整块维护,块内暴力的原则。所以我们一般先考虑一个暴力算法,再使用分块优化。建立分块:我们定义一个分块的结构体b,分别存......
  • [bzoj2120]数颜色/维护队列 (分块)
    数颜色/维护队列[做题笔记]此生第一道不贺题解\(AC\)的分块蓝题!!!题目描述墨墨@hs_mo购买了一套\(N\)支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会向你发布如下指令:\(Q\L\R\)代表询问你从第\(L\)支画笔到第\(R\)支画笔中共有几种不同颜色的......
  • 分块学习笔记
    学了分块,感觉这玩意好难啊,怎么听起来这么简单?【】【】分块!先推荐一个东西:loj分块全家桶!首先,把一整个数组劈成\(\sqrtn\)块是最优的!(当然如果你想写一个\(114514\)块的分块也没问题但他不优啊!)长这样:这样它的复杂度是:预处理:\(O(n\sqrtn+q)\)在线处理:\(O(q\sqrtn+n)\)......
  • 数论分块
    数论分块分块整除例题G-几番烟雾,只有花难护向上取整注意相减时要加上模数再取模#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'#defineintlonglong#definedb(x)cout<<x<<""<<endl;#define_db(a,n)for(inti=1;i<=n;i++)......
  • Ynoi 大分块选做
    第二分块linkCF版本题意:给出一个序列\(a_{1...n}\),有\(m\)次操作。每次:修改:给出\(l,r,x\),表示把区间\([l,r]\)中\(>x\)的数减去\(x\)查询:给出\(l,r,x\),求\([l,r]\)中有多少个数\(=x\)\(1\len\le10^6,\space1\lem\le5\times10^5,\space0\lea_i,x......