筛法
文章平均质量分 92
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【2019集训队互测】整点计数(min_25筛)
传送门这里稍微口胡记录一下要点,详细的自己去看xyx的集训队论文。题解:容易发现我们实际上要算的就是以 xxx 为斜边的沟谷数的数量。即统计有多少对 (y,z)(y,z)(y,z) ,满足 y2+z2=x2y^2+z^2=x^2y2+z2=x2。我们用高斯整数的角度来看,其实就是求 x2x^2x2 是多少个高斯整数与其共轭复数的乘积。在这道题里面,我们相当于是要对 x2x^2x2 在...原创 2020-04-14 16:18:32 · 321 阅读 · 0 评论 -
【校内模拟】羊(杜教筛)
求 ∑k=1n∑i=1k∑j=1kgcd(i,j,k)\sum_{k=1}^n\sum_{i=1}^k\sum_{j=1}^kgcd(i,j,k)k=1∑ni=1∑kj=1∑kgcd(i,j,k)题解:设 f(n)=∑i=1n∑j=1ngcd(i,j,n)f(n)=\sum_{i=1}^n\sum_{j=1}^ngcd(i,j,n)f(n)=∑i=1n∑j=1ngcd(i,j,n)...原创 2020-04-07 15:15:13 · 239 阅读 · 0 评论 -
【HDU6537】Neko and function(min_25筛)(二项式反演)
传送门题解:fff有一个令人窒息的限制,就是每个位置不能是 1,我们考虑构造一个函数 g(n.k)g(n.k)g(n.k) 其定义和 fff 一样但是允许某些位置为 111。我们考虑 kkk 个位置中有多少个 111,不难发现 ggg 是 fff 乘上一个组合数的前缀和 :g(n,k)=∑i=0k(ki)f(n,i)g(n,k)=\sum_{i=0}^k{k\choose i}f(n,i...原创 2020-02-14 22:14:13 · 319 阅读 · 0 评论 -
【HDU6607】Easy Math Problem(杜教筛)(min_25筛)(拉格朗日插值)
传送门题解:推起来还挺简单的一道题。我们要求的是:Ans=∑i=1n∑j=1ngcd(i,j)klcm(i,j)[gcd(i,j)∈P]=∑p∈P∑i=1n∑j=1npk−1ij[gcd(i,j)=p]=∑p∈Ppk+1∑i=1⌊np⌋i∑j=1⌊np⌋j[gcd(i,j)=1]\begin{aligned}Ans=&\sum_{i=1}^n\sum_{j=1}^ngcd(i...原创 2020-02-14 18:47:41 · 236 阅读 · 0 评论 -
【HDU6683】Rikka with Geometric Sequence(杜教筛)(非常规数论分块)
传送门题解:长度为 1 和 2 的等比数列个数是个人都会。考虑长度为3及以上的等比数列个数可以考虑公比。设公比 q=a/bq=a/bq=a/b,其中a>b,gcd(a,b)=1a>b,gcd(a,b)=1a>b,gcd(a,b)=1,设长度为kkk,则数列头显然有 ⌊nak−1⌋\lfloor\frac{n}{a^{k-1}}\rfloor⌊ak−1n⌋ 中选择,合法...原创 2020-02-10 22:52:55 · 244 阅读 · 0 评论 -
【HDU5608】function(莫比乌斯反演)(杜教筛)
传送门题解:先莫比乌斯反演+调和级数预处理出部分前缀和。杜教筛的式子非常显然:S(n)=(n3)−∑i=2nS(⌊ni⌋)S(n)={n\choose 3}-\sum_{i=2}^nS(\lfloor\frac{n}{i}\rfloor)S(n)=(3n)−i=2∑nS(⌊in⌋)代码:#include<bits/stdc++.h>#define ll long...原创 2020-02-10 22:00:19 · 150 阅读 · 0 评论 -
【HDU6417】Rikka with APSP(min_25筛)
传送门题解:考虑怎么算出 aaa 到 bbb 的最短路。设 Sa,bS_{a,b}Sa,b 表示 aaa 和 bbb 的唯一表示中指数奇偶性不一样的质数集合。则 da,b={1∣Sa,b∣=0∏p∈Sa,bp∣Sa,b∣>0d_{a,b}=\left\{\begin{aligned}1 &&|S_{a,b}|=0\\\prod_{p\in S_{a,b}}p&...原创 2020-02-10 21:36:30 · 399 阅读 · 2 评论 -
【校内模拟】ふわふわ時間/轻飘飘时间(杜教筛)(莫比乌斯反演)(Lucas定理)(组合数求和)
简要题意:给你n,m,Bn,m,Bn,m,B,求∑i=1n∑j=1m(gcd(i,j)B)\sum_{i=1}^n\sum_{j=1}^m{\gcd(i,j) \choose B}i=1∑nj=1∑m(Bgcd(i,j))模数不是很大。题解:OJ上的题目不是日语原文看着莫名窒息而且这题面剧情也不是很连贯啊,看着尬死了流水的轻音部,铁打的滑滑蛋,以及打Fe的zxyoi假设 n≤...原创 2019-11-06 21:11:37 · 154 阅读 · 0 评论 -
【校内模拟】calc(多项式快速插值)(多项式多点求值)(杜教筛)
其实感慨还是挺多的,从某种意义上来说这道题算是考场AC了吧,至于那个卡空间的10pts,感觉数组实现会过的轻松一点,vector的话空间常数略大。。。但是我是一个vector多项式党从来没有想过自己能够在考场上写出超过5.5KB的正确代码并AC,而且是精简不下去的那种。对自己来说算是一个里程碑吧,虽然说这次的基本上都是板子,但是有一堆板子是考场现推的,比如邻项快速插值的加速写法。题解:求S(...原创 2019-10-02 23:39:51 · 265 阅读 · 0 评论 -
【51nod1965】奇怪的式子(min_25筛)
传送门题解:咕咕咕代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout;using pll=std::pair<ll,ll>;#define fi first#define ...原创 2019-08-30 09:05:56 · 140 阅读 · 0 评论 -
【51nod1847】奇怪的数学题(杜教筛)(min_25筛)(第二类斯特林数)
传送门题解:神题。首先设h(gcd(i,j))=sgcd(i,j)h(gcd(i,j))=sgcd(i,j)h(gcd(i,j))=sgcd(i,j),则h(n)=nmnp(n)h(n)=\frac{n}{mnp(n)}h(n)=mnp(n)n则我们要求Ans=∑i=1n∑j=1nh(gcd(i,j))k=∑d=1nh(d)k∑i=1⌊nd⌋∑j=1⌊nd⌋[gcd(i,j)]=1=∑...原创 2019-08-28 20:12:26 · 181 阅读 · 0 评论 -
【FJWC2018】最大真因数(min_25筛)
传送门题解:考虑min_25筛法实际执行的第一步,筛质数点值之和,这一步中减去合数的贡献总是在用它的最小质因子。而一个合数的最大真因子实际上就是它本身除掉它的最小质因子。直接在min_25执行过程中统计一下答案就行了。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs...原创 2019-08-28 15:45:27 · 270 阅读 · 0 评论 -
【JXOI2018】游戏(埃氏筛)(组合数学)
传送门题解:我们发现,对于[l,r][l,r][l,r]内,没有除自己以外的因子在[l,r][l,r][l,r]是我们必须筛掉的,而且完成任务当且仅当把具有上述特征的数筛完。直接埃氏筛统计有多少个数,设为ctctct,然后组合数算一下。考虑答案为iii的方案有多少种,我们得到:∑i=ctni⋅(i−1ct−1)⋅ct!⋅(n−ct)!\sum_{i=ct}^ni\cdot {i-1\c...原创 2019-08-28 15:23:11 · 134 阅读 · 0 评论 -
【51nod1584】加权约数和(莫比乌斯反演)(线性筛)
传送门题解:一看这种题就是大力上莫比乌斯反演。首先maxmaxmax并不是能够处理的东西。设:A(n)=∑i=1n∑j=1iiσ(ij)B(n)=∑i=1niσ(i2)A(n)=\sum_{i=1}^n\sum_{j=1}^ii\sigma(ij)\\B(n)=\sum_{i=1}^ni\sigma(i^2)A(n)=i=1∑nj=1∑iiσ(ij)B(n)=i=1∑niσ(i2...原创 2019-08-03 17:33:09 · 167 阅读 · 0 评论 -
【51nod1575】Gcd and Lcm(积性函数分析)(min_25筛)
传送门题解:首先我们知道gcdgcdgcd和lcmlcmlcm都是可以分质因子来算的,感觉可能会和积性函数沾边。所以很显然地,我们设f(n)=∑i=1n∑j=1nlcm(gcd(i,n),gcd(j,n))f(n)=\sum\limits_{i=1}^n\sum\limits_{j=1}^nlcm(gcd(i,n),gcd(j,n))f(n)=i=1∑nj=1∑nlcm(gcd(i,n...原创 2019-08-02 23:07:48 · 351 阅读 · 0 评论 -
【LOJ6682】梦中的数论(min_25筛)
传送门题解:首先题目里面的式子乍一看很扯,实际上我们发现对于iii,它的每一对约数都出现了一次并且被计算,则实际上我们要求的是:Ans=∑i=1n(d(i)2)=12(∑i=1nd2(i)−∑i=1nd(i))Ans=\sum_{i=1}^n{d(i)\choose 2}\\=\frac{1}{2}(\sum_{i=1}^nd^2(i)-\sum_{i=1}^nd(i))Ans=i=1∑n...原创 2019-07-31 20:53:41 · 289 阅读 · 0 评论 -
【LOJ572】Misaka Network 与求和(min_25筛)(莫比乌斯反演)(杜教筛)
传送门题解:事实证明,在这种需要整除分块的题目中,不对min_25记忆化,常数实在是太大了(虽然还是能过)。fk(i)f^k(i)fk(i)看着不舒服,以下全部写作f(k)f(k)f(k)则我们要求这个东西:Ans=∑i=1n∑j=1nf(gcd(i,j))=∑d=1nf(d)∑i=1⌊nd⌋∑j=1⌊nd⌋[gcd(i,j)=1]\begin{aligned}Ans&am...原创 2019-07-31 20:09:03 · 212 阅读 · 0 评论 -
【UR#13】【UOJ188】Sanrd(min_25筛)
传送门题解:题目的实际含义是要求所有合数的次大质因子(不去重)之和。考虑min_25的做法,设S(n,i)S(n,i)S(n,i)表示所有[1,n][1,n][1,n]的数,次大质因子大于等于pip_ipi的次大质因子之和。考虑在剩下两个数的时候计算,显然就是看[pi,npit][p_i,\frac{n}{p_i^t}][pi,pitn]里面有多少个质数,用min_25预处理一下...原创 2019-07-31 17:01:36 · 134 阅读 · 0 评论 -
【LOJ6053】简单的函数(min_25筛)
传送门题解:首先还是考虑求质数的点值,f(p)=p⊕1f(p)=p\oplus1f(p)=p⊕1,在质数处只有f(2)=2⊕1=2+1f(2)=2\oplus 1=2+1f(2)=2⊕1=2+1,其他质数都是f(p)=p−1f(p)=p-1f(p)=p−1。质数点值前缀和处理的时候算一下质数个数和质数之和然后减掉就行了。剩下的都是min_25板子。代码:#include<bi...原创 2019-07-31 16:19:08 · 169 阅读 · 0 评论 -
【SPOJ-DIVCNTK】Counting Divisors (general)(min_25筛)
传送门题解:设f(i)=σ0(ik)f(i)=\sigma_0(i^k)f(i)=σ0(ik),显然由于σ0(i)\sigma_0(i)σ0(i)是一个积性函数,则σ0(ik)\sigma_0(i^k)σ0(ik)是一个积性函数。以下介绍的是min_25求积性函数前缀和的第二部分,第一部分请参考LOJ6235显然这道题的质数点值前缀和直接算质数个数后乘上k+1k+1k+1就行了。...原创 2019-07-31 15:39:29 · 163 阅读 · 0 评论 -
【LOIJ6202】叶氏筛法(min_25筛)
传送门题解:直接用min_25求f(p)=pf(p)=pf(p)=p在所有素数处的点值之和就行了。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout;cs int N=1e6+7;cs...原创 2019-07-31 14:43:19 · 314 阅读 · 0 评论 -
【LOJ6235】【HDU5901】区间素数个数/Count primes(min_25筛)
LOJ传送门HDU传送门题解:min_25筛法实际执行流程分两部分,这里只需要用到第一部分。给出函数f(i)f(i)f(i)和上界nnn,求∑i=1n[i is a prime]f(i)\sum_{i=1}^{n}[\text{i is a prime}]f(i)∑i=1n[i is a prime]f(i)就是求所有素数的...原创 2019-07-31 12:06:27 · 322 阅读 · 0 评论 -
【LOJ6207】米缇(莫比乌斯反演)(杜教筛)(拉格朗日插值)
传送门题解:杜教筛里面long long 没有取模炸了一堆。。。首先推式子:Ans=∑i=1n∑j=1nσk(ij)=∑i=1n∑j=1n∑x∣i∑y∣j[gcd(x,y)=1](iyx)k=∑d=1nμ(d)dk∑i=1⌊nd⌋∑j=1⌊nd⌋∑x∣i∑y∣j(iyx)k=∑d=1nμ(d)dk∑i=1⌊nd⌋∑x∣i(ix)k∑j=1⌊nd⌋∑y∣jyk=∑d=1nμ(d)dk(∑i...原创 2019-07-27 11:38:07 · 337 阅读 · 0 评论 -
【51nod1227】平均最小公倍数(杜教筛)
传送门题解:利用差分,我们要求的实际上是这个玩意:Ans=∑n=1N∑i=1nlcm(i,n)nAns=\sum_{n=1}^{N}\frac{\sum\limits_{i=1}^{n}lcm(i,n)}{n}Ans=n=1∑Nni=1∑nlcm(i,n)根据LCMSUM的推导我们知道:∑i=1nlcm(i,n)=n2+n2∑d∣ndϕ(d)\sum_{i=1}^nlcm(i,n...原创 2019-07-07 09:20:33 · 237 阅读 · 0 评论 -
数论选讲(更新中)
数论选讲(初等数论基础概念就不普及了)一些前置姿势:素数分布:素数有无限个,用π(x)\pi(x)π(x)表示小于xxx的素数个数,则随着xxx的增长,有π(x)=Θ(xlnx)\pi(x)=\Theta(\frac{x}{\ln x})π(x)=Θ(lnxx),同时蕴含常数111。这个结论可以用于估计某些与枚举素数有关的算法的复杂度。算术基本定理,又称唯一分解定理。对于任...原创 2019-02-16 17:24:25 · 2074 阅读 · 0 评论 -
2019.01.21【BZOJ3944】【洛谷P4213】Sum(杜教筛)
传送门解析:为什么这道题不在zxyoi的模板分类那一栏呢?因为zxyoi要更这道题的题解,但是他从不更新模板题解因为数学题代码是没有模板的,只有其中的思路是相通的。所以zxyoi这里就直接开始推了。前置姿势:整除分块,积性函数,DirichletDirichletDirichlet卷积,莫比乌斯反演杜教筛:应该都知道杜教是谁吧,不知道的请自行百度。所以杜教筛是个什么东西,由杜...原创 2019-01-21 13:24:56 · 319 阅读 · 0 评论