莫比乌斯反演&杜教筛
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[莫比乌斯函数] BZOJ 2986 Non-Squarefree Numbers & BZOJ 2440 [中山市选2011]完全平方数
不知不觉就发现了2440的双倍经验考虑二分 然后用容斥求出数量 x以内的无平方因子数=无需是任何质数的倍数的数的数量(即x)-是至少一个质数平方倍数的数的数量+是至少两个质数平方倍数的数的数量-是至少三个质数平方倍数的数的数量...发现每个数前的符号与莫比乌斯函数一致然后么 复杂度分析 Orz2986的代码#include#原创 2016-05-20 16:48:02 · 687 阅读 · 0 评论 -
[杜教筛 约数个数前缀和] BZOJ 4176 Lucas的数论
吉丽博客传送门:http://jiruyi910387714.is-programmer.com/posts/195270.html套用陈老师r老师等式后反演#include#include#include#include typedef long long ll;using namespace std;using namespace std::tr1;原创 2017-01-26 22:54:41 · 2168 阅读 · 1 评论 -
[杜教筛 约数和前缀和] 51Nod 1220 约数之和
吉丽博客传送门:http://jiruyi910387714.is-programmer.com/posts/195270.html套用公式后反演 然后杜教筛求和比较有意思的是其间我算了两个值后来发现这两个值竟然是相等的 都可以由约数和前缀和推导过来#include#include#include#include typedef long l原创 2017-01-26 23:01:19 · 2398 阅读 · 3 评论 -
[莫比乌斯反演 复杂度分析] 51Nod 1222 最小公倍数计数
这么反演一通转化为abc[暴力] HDU 4473 Exam a 以立方根的复杂度枚举一通再讨论下就好了既然糖老师强调复杂度分析 那就来分析分析对于子问题 abc复杂度是n的2/3次的再套一重外循环是n的5/6次?肯定是我分析错了#include#include#include#include typedef long long ll;原创 2017-01-26 23:15:56 · 729 阅读 · 0 评论 -
[杜教筛] BZOJ 3512 DZY Loves Math IV
JC大爷出的神题送一发链接当我会做了:http://duxyz.github.io/solution/2014/04/03/DZY-Loves-Math-4/其中有个式子不是那么显然需要理解下 实在不行就自己手写个例子#include#include#include#include typedef long long ll;using namespace std;u原创 2017-01-26 23:22:11 · 1008 阅读 · 0 评论 -
[莫比乌斯反演] 51Nod 1584 加权约数和
这个网上找不到题解嘛 那我就来写一发!(式子略) 不是我不想写 是我真的不会用markdown 我立一发flag 除夕我要学markdown 完成题解补完计划Ans=2∑i=1n∑j=1ii∗σ(ij)−∑i=1ni∗σ(i2) Ans= 2\sum _{i=1}^n \sum _{j=1}^i i*\sigma(ij) - \sum _{i=1}^n i*\sigma(i^2)因为∑i=1n原创 2017-01-27 15:00:53 · 1182 阅读 · 0 评论 -
[莫比乌斯反演] CCPC 2016 Hangzhou J & HDU 5942 Just a Math Problem
记f(k)f(k)表示kk的素因子个数,g(k)=2f(k)g(k)=2^{f(k)}。 求g(1)+…+g(n)g(1)+…+g(n)。 n≤1012n\leq 10^{12}g(k)g(k)的组合意义为满足(i,j)=1(i,j)=1且ij=kij=k的对数。 所以变成求(i,j)=1(i,j)=1且ij≤nij\leq n的对数。 ∑ij≤n[(i,j)=1]===∑ij≤n∑d|i原创 2017-03-30 07:59:57 · 1188 阅读 · 0 评论 -
[莫比乌斯反演] BZOJ 4804 欧拉心算
手推一推就知道答案是Ans=∑D=1n⌊nD⌋⌊nD⌋∑d|Dμ(d)∗ϕ(Dd)Ans=\sum_{D=1}^n \lfloor { n\over D}\rfloor\lfloor { n\over D}\rfloor\sum_{d|D}\mu(d)*\phi({D\over d})后面那个f(n)=∑d|nμ(d)∗ϕ(nd)f(n)=\sum_{d|n}\mu(d)*\phi({n\over原创 2017-03-31 20:26:23 · 1242 阅读 · 0 评论 -
[莫比乌斯反演 伯努利数] BZOJ 2627 JZPKIL
ydc的题解 orzz 因为这道题才去学习了伯努利数 可以看这里#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;namespace RHO{ int prime[9]={2,3,5,7,11,13,17,19,23}; unsigned long原创 2017-04-02 13:36:12 · 842 阅读 · 0 评论 -
[分块 莫比乌斯反演] BZOJ 4815 [Cqoi2017]小Q的表格
那个神奇的关系式 其实是辗转相减的形式 稍微发现下就能知道 这其实是个一维的东西 fa,b=abgcd2(a,b)∗fgcd(a,b),gcd(a,b)f_{a,b}={ab\over gcd^2(a,b)}*f_{gcd(a,b),gcd(a,b)} 然后推一推就知道 ans=∑ni=1fi,i∗g(⌊ni⌋)ans=\sum_{i=1}^n f_{i,i}*g(\lfloor {n\ov原创 2017-04-21 08:20:27 · 592 阅读 · 0 评论 -
[莫比乌斯反演] BZOJ 4816 [Sdoi2017]数字表格
如果我们有fibn=∏d|nfdfib_n=\prod_{d|n} f_d 那么 就有 ∏i=1n∏j=1mfibgcd(i,j)=∏i=1n∏j=1m∏d|i,d|jfd=∏d=1min(n,m)f⌊nd⌋⌊md⌋d\begin{eqnarray}\prod_{i=1}^n\prod_{j=1}^m fib_{gcd(i,j)}&=&\prod_{i=1}^n\prod_{j=1}^m原创 2017-05-03 21:26:26 · 409 阅读 · 0 评论 -
[杜教筛] BZOJ 4916 神犇和蒟蒻
第一问玩玩你的吧 第二问直接杜教筛 S(n)=n∗(n+1)∗(2n+1)6−∑i=2ni∗S(⌊ni⌋)S(n)={n*(n+1)*(2n+1)\over 6}-\sum _{i=2}^n i*S(\lfloor{n\over i} \rfloor)#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>原创 2017-06-01 21:13:06 · 514 阅读 · 0 评论 -
[数论 反演] BZOJ 4833 最小公倍佩尔数
当时比赛时灵机一动 把gigi−1g_i\over g_{i-1}喂给了OEIS 然后就找到了 233 就是这个咯 然后就水过去了 题解?题解我还没看 先挖个坑UPD:跟这个题是一毛一样的咯#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;const原创 2017-04-22 20:48:42 · 1429 阅读 · 0 评论 -
[数位DP 莫比乌斯反演] 2017 计蒜之道 复赛 A. 阿里云秘钥池
大概可以推出来转移是 fx=∑d|xμ(d)∑⌊P−1d⌋i=1gid=∑d|xμ(d)G(d)f_x=\sum_{d|x}\mu(d)\sum_{i=1}^{\lfloor {P-1\over d}\rfloor} g_{id}=\sum_{d|x}\mu(d)G(d) 转移是O(nlnn)O(n\ln n)的 然后就直接数位dp咯#include<cstdio>#include<cst原创 2017-06-11 08:01:22 · 711 阅读 · 1 评论 -
[反演 数论] 51Nod 1355 斐波那契的最小公倍数
我好菜啊 出过一万遍的原题 我怎么第一次看见啊 某乎链接 按照zyz的做法 orzzlcm(fS)==∏T⊆S,T≠∅gcd(fT)(−1)|T|+1∏T⊆S,T≠∅f(−1)|T|+1gcd{T}\begin{eqnarray}\text{lcm}(f_S)&=&\prod_{T\subseteq S,T\neq \emptyset }\text{gcd}(f_T)^{(-1)^{|T|+1原创 2017-06-22 20:56:59 · 1441 阅读 · 1 评论 -
[反演 莫队算法] HDU 4676 Sum Of Gcd
考虑对一堆数求一个gcd 我们记录每一个约数xx的出现次数num[x]num[x] 那么两两间gcd的和是什么呢 ∑x∗C2num[x]\sum x*C_{num[x]}^2 肯定不是 这样会有重复 猜想f(x)f(x)是关于x的函数 ∑f(x)∗C2num[x]\sum f(x)*C_{num[x]}^2 那么应该满足 ∑d|xf(d)=x\sum_{d|x} f(d)=x 因为原创 2017-02-01 22:39:26 · 439 阅读 · 0 评论 -
[反演] LOJ #509. 「LibreOJ NOI Round #1」动态几何问题
μ2(n)=∑d2|nμ(d)\mu^2(n)=\sum_{d^2|n} \mu(d) 然后就是xjb推 反正退役了 我也就弃坑了 95分代码 复杂度分析及优化详见官方题解#include<cstdio>#include<cstdlib>#include<cmath>#include<algorithm>using namespace std;typedef long long l原创 2017-07-23 13:22:57 · 1267 阅读 · 0 评论 -
[杜教筛] 51Nod 1227 平均最小公倍数
糖老师博客传送门:http://blog.csdn.net/skywalkert/article/details/50500009跟最小公倍数类似求phi·id的前缀和 把phi卷上一个1#include#include#include#includeusing namespace std;using namespace std::tr1;typedef long原创 2017-01-26 22:49:57 · 474 阅读 · 0 评论 -
[杜教筛] 51Nod 1238 最小公倍数之和 V3
比最大公约数之和要难搞一些吉丽博客传送门:http://jiruyi910387714.is-programmer.com/posts/195270.html这道题两个要点首先∑1还有就是对于phi(i)*i*i也就是phi·id·id的前缀和我们单独卷一下phi (phi*1)·id·id=id·id·id#include#include#includ原创 2017-01-26 22:45:50 · 1252 阅读 · 0 评论 -
[杜教筛] 51Nod 1237 最大公约数之和 V3
ans = ∑1 = ∑1直接用杜教筛跑欧拉函数前缀和就好了#include#include#include#include typedef long long ll;using namespace std;using namespace std::tr1;const int maxn=10000000;int prime[100000原创 2017-01-26 22:39:43 · 749 阅读 · 0 评论 -
[数论] ACM 2015 Changchun B Count a*b
题意:题解:#include#include#include#include#include#include#define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)#define per(i,j,k) for(int i=(int)j;i>=(int)k;i--)using namespace std;原创 2016-07-09 20:33:13 · 702 阅读 · 1 评论 -
[莫比乌斯反演] BZOJ 4174 tty的求助
丢题解跑:http://blog.csdn.net/PoPoQQQ/article/details/46820689%运算转化成gcd#include#include#includeusing namespace std;typedef long long ll;const int P=998244353;const int N=500000;int n,m; d原创 2016-07-10 18:37:32 · 531 阅读 · 0 评论 -
[莫比乌斯反演] BZOJ 2301 [HAOI2011]Problem b
比较水的反演了#include#include#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1原创 2016-07-08 20:06:08 · 297 阅读 · 0 评论 -
[莫比乌斯反演] BZOJ 2820 YY的GCD
#include#include#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin原创 2016-07-08 20:14:19 · 314 阅读 · 0 评论 -
[莫比乌斯反演] BZOJ 2154 Crash的数字表格
#include#include#include#include#include#define P 20101009using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread原创 2016-07-08 20:54:26 · 439 阅读 · 0 评论 -
[莫比乌斯反演] BZOJ 1101 [POI2007]Zap
水#include#include#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2)原创 2016-07-08 21:08:28 · 384 阅读 · 0 评论 -
[莫比乌斯反演 积性函数前缀和] 51Nod 1190 最小公倍数之和 V2
题解:http://blog.csdn.net/u014610830/article/details/49493279#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1原创 2016-07-08 21:21:20 · 776 阅读 · 0 评论 -
[莫比乌斯反演 约数个数] BZOJ 3994 [SDOI2015]约数个数和
#include#include#include#include#include#define P 20101009using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread原创 2016-07-08 21:19:26 · 409 阅读 · 0 评论 -
[莫比乌斯反演 积性函数前缀和] BZOJ 4407 于神之怒加强版
#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) re原创 2016-07-08 21:12:53 · 496 阅读 · 0 评论 -
[莫比乌斯反演 积性函数前缀和] BZOJ 2693 jzptab
2154的加强版#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdi原创 2016-07-08 20:57:46 · 1108 阅读 · 0 评论 -
[莫比乌斯反演 树状数组] BZOJ 3529 [Sdoi2014]数表
#include#include#include#includeusing namespace std;typedef pair abcd;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p原创 2016-07-08 20:26:58 · 322 阅读 · 0 评论 -
[莫比乌斯反演 数学] 2016 计蒜之道 初赛 第二场 联想的显示屏校准
我们枚举斜率j/i gcd(i,j)==1那么不会造成重复的起点满足 x+i那么枚举一下#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,原创 2016-11-09 10:40:08 · 339 阅读 · 0 评论 -
[莫比乌斯反演 高斯消元 数学技巧] BZOJ 3601 一个人的数论
推导过程直接拉过来不是很好 看这位神犇的吧http://www.cnblogs.com/jianglangcaijin/p/4033399.html#include#include#includeusing namespace std;typedef long long ll;const ll P=1e9+7;inline ll Pow(ll a,ll b)原创 2016-12-26 18:43:19 · 516 阅读 · 0 评论 -
[杜教筛模板] 51Nod 1244 莫比乌斯函数之和
模板题#include#include#include#include typedef long long ll;using namespace std;using namespace std::tr1;const int maxn=10000000;int prime[1000000],num;int vst[maxn+5],miu[maxn+5];原创 2017-01-26 22:27:20 · 873 阅读 · 0 评论 -
[杜教筛模板] 51Nod 1239 欧拉函数之和
模板题#include#include#include#include typedef long long ll;using namespace std;using namespace std::tr1;const int maxn=10000000;int prime[1000000],num;int vst[maxn+5],phi[maxn+5原创 2017-01-26 22:30:31 · 604 阅读 · 0 评论 -
[杜教筛模板] BZOJ 3944 Sum
就是把两道模板题生掰硬凑骗骗访问量吧[杜教筛模板] 51Nod 1244 莫比乌斯函数之和[杜教筛模板] 51Nod 1239 欧拉函数之和#include#include#include#includetypedef long long ll;using namespace std;using namespace std::tr1;cons原创 2017-01-26 22:33:09 · 546 阅读 · 0 评论 -
[杜教筛] HDU 5608 function
可以nlnn的时间预处理下#include#include#include#includeusing namespace std;using namespace std::tr1;typedef long long ll;const ll P=1e9+7;const ll inv=(P+1)/3;const int maxn=1000000;inline vo原创 2017-01-26 22:36:27 · 546 阅读 · 0 评论 -
[杜教筛] Codechef January Challenge 2018 #SQRGOOD Simplify the Square Root
二分转化为μ2\mu^2的前缀和。 然后转化为O(n13)O(n^{1\over 3})的运算,但是需要预处理μ\mu的前缀和,大力杜教筛求和。 然后感谢阿爷教我把二分改成了迭代,小范围内一个一个挪,用rho求μ(n)\mu(n),然后就能卡进去了。 复杂度似乎是萎的吧。#include#include#include#include#include#include#defi原创 2018-01-19 14:16:38 · 697 阅读 · 0 评论