1.数论函数的卷积公式

(ƒ*g)(n)=Σd|nƒ(d)×g(n/d)

已知f*[1~n],g[1~n]

怎么求(f*g)[1~n]?

  一个个求复杂度O(n根号n)

如何加速?

  考虑更换枚举顺序(这点很重要,在接下来的一些求和运算中会用到)

  枚举代码:

ll f[N],g[N],h[N];
void calc(int n)
{
for(int i=;i*i<=n;i++)
{
h[i*j]+=f[i]*g[i];
for(int j=i+;i*j<=n;j++)
h[i*j]+=f[i]*g[j]+f[j]*g[i];
}
}

这样子速度就会变为n log n

例子1:

求当a≤x≤b,c≤y≤d时,gcd(x,y)=1的个数

前缀和如图

式子为:

Σi=1n Σj=1m [gcd(i,j)=1]

  []意思:为真返回1否则返回0

  联系到莫比乌斯函数μ(d)

  Σd|n μ(d):

    当n=1时它=1

    否则=0

这两个是可以等效替换的:

Σi=1Σj=1m Σd|gcd(i,j)μ(d)

交换枚举顺序,降到了线性复杂度:

对于这个东西:

d从1枚举到n时,可能的取值只有o(根号n)种

由于当1≤d≤根号n和根号n≤d≤n时,最多情况数都是根号n

所以可能的取值为O(根号n)种

我们可以画一条数轴,每一个节点表示或者的值有变化,则我们可以画出O(根号n)个区间    ,并且复杂度O(根号n)

可以推出x的表达式:

这里是因为这部分要<n,

所以这个分数是<1的,一个整数乘一个<1的数再取整,所得的数小于原来的整数

代码:

 xian_xing_shai();

 for (int a=;a<=n;a++)
sum_mu[a] = sum_mu[a-] + mu[a]; int solve(int n,int m)
{
int ans=;
//for (int d=1;d<=n;d++)
// ans += mu[d] * (n/d) * (m/d);
for (int d=;d<=n;)
{
int next_d = min(
n/(n/d),
m/(m/d)
);
ans += (sum_mu[next_d] - sum_mu[d-]) * (n/d) * (m/d);
d=next_d+;
}
return ans;
}

例子2
求当a≤x≤b,c≤y≤d时gcd(x,y)是质数的(x,y)的个数

交换枚举顺序:变为枚举质数P在前

然后再变换枚举的东西:

这个东西是一个积性函数,可以按照积性函数求

2.组合数问题

一.加法原理:具有性质A的事件有m个,具有性质B的事件有n个,则具有性质A或性质B的事件有m+n个

百度百科定义:做一件事情,完成它有n类方式,第一类方式有M1种方法,第二类方式有M2种方法,……,第n类方式有Mn种方法,那么完成这件事情共有M1+M2+……+Mn种方法。

举个例子:从武汉到上海有乘火车、飞机、轮船3种交通方式可供选择,而火车、飞机、轮船分别有k1,k2,k3个班次,那么从武汉到上海共有 k1+k2+k3种方式可以到达。

二,乘法原理:具有性质A的事件有m个,具有性质B的事件有n个,则具有性质A及性质B的事件有mn个

百度百科定义:做一件事,完成它需要分成n个步骤,做第一 步有m1种不同的方法,做第二步有m2种不同的方法,……,做第n步有mn种不同的方法。那么完成这件事共有 N=m1×m2×m3×…×mn种不同的方法。

例如,从A城到B城中间必须经过C城,从A城到C城共有3条路线(设为a,b,c),从C城到B城共有2条路线(设为m,t),那么,从A城到B城共有3×2=6条路线

对于每一个质因数的n次方,共有n+1中选择方法,即这个质因数的0~n次方

故共有   4*3*5=60  种方法

 

取两册文字不同的书的方案=取日文英文+取日文中文+取英文中文

相同的:取日文日文,取中文中文,取英文英文

随便取两册:上两问加起来

排列组合:

组合:

从n个元素中选取r个元素,当不计顺序时,其方案数为:

Cnr=C(n,r)=n!/r!(n-r)!  

排列:

从n个元素中选取r个元素,当考虑顺序时,其方案数为:

Pnr=P(n,r)=n! / (n-r)!

考虑两面旗帜的方法和三盆花的方法,根据乘法原理乘起来即可

ans=P(5,2)*P(20,3)

先考虑对七名男生排序,然后在六个间隔中插入三名女生

ans=P(7,7)*P(6,3)

 

先看个位数:有0,2,4,6,8五种情况,对于0和8,它的千位数都是有2,3,4,5,6五种情况,对于剩下的三个数,各有2,3,4,5,6中除去它自己四种情况,故千位和个位可能的情况共有:2*5+4*3=22 种 ,然后对百位和十位排序,有P(8,2)种情况

故ans=22*P(8,2)

总的方案数减去选上男A和女B的方案数

ans=C(12,5)-C(10,3)

按余数分类:余数相同和余数不同

余数相同分为:(0,0,0),(1,1,1).(2,2,2);

1~300这些数中,余数相同的各有100个

故每一种可能的方式均为C(100,3)

余数不同时,每一个数都是从不同的余数中选一个,故方式为C(100,1)3

ans=3*C(100,3)+C(100,1)3

由于每种颜色的旗帜是相同的,所以讲相同颜色的旗帜放一起,只能算是一种方式

这个时候我们需要用组合数

ans=C(16,4)*C(12,4)*C(8,4)*C(4,4);(为什么楼主也在想...有待补充,哪位大佬会记得跟我说一下)

组合数及其相关性质

  • 有n个不同元素,从中选r个,但是每个可以选多次,则其方案数为C(n+r-1,r)

证:设选的数为a1,a2,....,ar,(由小到大),则1≤a1≤a2≤a3......≤ar≤n

我们可以通过一种变换,就是让ai+i-1,这样可以去掉=

有:1≤a1<a2+1<a3+2<.....<ar+r-1<n-r+1

中间还是有r个数,我们可以设bi=ai+i-1

则1≤b1<b2<b3<....<br≤n-r+1

所以问题就开始转换为无重复组合问题,即在n+r-1 个元素中选中 r个的组合数 。

  • 有n个不同元素,从中选r个,但是选中的元素大小不能相邻,则其方案数为C(n-r+1,r)

证:设选的数为a1,a2,....,ar,(由小到大),则1<a1<a2<a3<......<ar<n\

其中a1+1<a2,a2+1<a3....

将每个ai-i+1

有a1<a2-1<a3-2<...<ar-r+1

其他的一些性质

  • C(n+m,n)=C(n+m,m)
  • C(n,m)=C(n-1,m-1)+C(n-1,m)
  • C(n+r+1,r)=C(n+r,r)+C(n+r-1,r-1)+C(n+r-2,r-2)+....+C(n,0)
  • C(n,l)C(l,r)=C(n,r)C(n-r,l-r)
  • C(n,0)+C(n,1)+.....+C(n,n)=2n
  • C(n,0)-C(n,1)+C(n,2)-...=0
  • C(r,r)+C(r+1,r)+...+C(n,r)=C(n+1,r+1)

清北澡堂 Day 3 上午的更多相关文章

  1. 清北澡堂 Day2 上午 一些比较重要的关于数论的知识整理

    1.算数基本定理: 对于任意的大于1的正整数N,N一定能够分解成有限个质数的乘积,即 其中P1<P2<...<Pk,a1,a2,...,ak>=1; 证: 存在性: 若存在最小 ...

  2. 清北澡堂 Day2 下午 一些比较重要的数论知识整理

    1.欧拉定理 设x1,x2,.....,xk,k=φ(n)为1~n中k个与n互质的数 结论一:axi与axj不同余 结论二:gcd(axi,n)=1 结论三:x1,x2,...,xk和ax1,ax2, ...

  3. 济南清北学堂游记 Day 1.

    快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现, ...

  4. 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)

    清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...

  5. 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)

    清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...

  6. 清北Day 2

    清北第二天,感受到了来自这个世界的不友善,大概把没听过不会的"名词"记录下来就已经一面了,然后被大佬说这都是最基础的东西,就很皮,那就趁别人练习字符串的题的时候,来写波博客了,倒不 ...

  7. 清北Day4

    版权声明:如需转载请标明出处,未得到本人许可请勿转载. 今天就可以看到传说中的 数据结构 嘿嘿嘿嘿 都有什么呢 链表 队列 栈 st表 hash 线段树 树链剖分 一.栈: 放出来这个看烂了的图 值得 ...

  8. 清明培训 清北学堂 DAY1

    今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1)   高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...

  9. 清北省选 DAY last 集锦

    这是题目描述的链接: http://lifecraft-mc.com/wp-content/uploads/2018/03/problems1.pdf (虽然这次没去清北,但还是厚颜无耻的做了一下这套 ...

随机推荐

  1. BGP:我们不生产路由,而是路由的搬运工

    1.BGP协议自身不能生产路由,它主要通过配置来将本地路由进行发布或者引入其他路由协议产生的路由. 有两种方法, 方法一.在BGP视图下,通过network命令将本地路由发布到BGP路由表中, 通过本 ...

  2. Docker for Win10中文乱码问题

    environment:win10  docker+centos7+nginx1.9.9 issue:在docker运行nginx(centos),volume本地html目录挂载到nginx的htm ...

  3. Git:五、操作远程仓库

    0.一般流程 1)自己新写:GitHub创建有README的库 -> clone到本地 2)修改已有:GitHub上fork别人的仓库 -> clone自己账号下的库到本地 1.创建库 右 ...

  4. linux中Samba服务器的配置

    Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件 ...

  5. Serverless架构

    什么是Serverless架构 Servlerless 架构是新兴的架构体系,在Serverless 架构中,开发者无需考虑服务器的问题,计算资源作为服务而不是服务器的概念出现,这样,开发者只需要关注 ...

  6. Linux DNS服务配置

    主.从域名服务器配置 一.实验环境 主域名服务器:ns1.topsec.com,192.168.120.119 从域名服务器:ns2.topsec.com,192.168.120.120 二.实验步骤 ...

  7. .NET 术语

    .NET 术语 1. AOT 预编译器.与 JIT 类似,此编译器还可将 IL 转换为机器代码. 与 JIT 编译相比,AOT 编译在应用程序执行前进行并且通常在不同计算机上执行. 由于在运行时 AO ...

  8. LeetCode算法题-Assign Cookies(Java实现)

    这是悦乐书的第234次更新,第247篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第101题(顺位题号是455).假设你是一个很棒的父母,并想给你的孩子一些饼干.但是,你 ...

  9. MySQL 数据查询

    SELECT子句:用来指定查询返回字段,星号(*)表示返回所有字段 SELECT  [DISTINCT]*|字段列表        #DISTINCT 用来过滤重复数据 FROM子句:用来指定数据来源 ...

  10. Spring Boot 2.x 快速入门(下)HelloWorld示例详解

    上篇 Spring Boot 2.x 快速入门(上)HelloWorld示例 进行了Sprint Boot的快速入门,以实际的示例代码来练手,总比光看书要强很多嘛,最好的就是边看.边写.边记.边展示. ...