集训DAYn——组合数学(1)
组合
又到了我们信息老师讲数学课了,吼吼吼
然后数学老师中途探望了一下,哇塞塞,然后他看到黑板上的题,微妙的笑了.
排列:
从n个数中有序的选出m个数的方案数是多少?
第一个数有n种取法,第二个数有n-1种取法......第m个数有n-m+1种取法。
n*(n-1)*...*(n-m+1)=n!/(n-m)!记为A(n,m).
组合:
从n个数中无序的选出m个数的方案数是多少?
先有序的取m个数,那么无序的m个数会被取到m!次。
A(n,m)/m!=n!/[m!(n-m)!]记为C(n,m)
C(n,m)=C(n-1,m)+C(n-1,m-1).
组合数的性质:1.C(m,n)=C(n-m,n)
2.C(m,n)=C(m,n-1)+C(m-1,n-1)
3.C(0,n)+C(1,n)+C(2,n)+...+C(n,n)=2^n
4.C(n,n)+C(n,n+1)+C(n,n+2)+...+C(n,n+r)=C(n+1,n+r+1)
5.C(0,n)+C(2,n)+C(4,n)+...=C(1,n)+C(3,n)+C(5,n)+...=2^(n-1)
something else:
1.n个人围着一张圆桌坐在一起,共有(n-1)! 种坐法。
2.从n个排成一排的数中取m个数,且数字之间互不相邻,共有C(m,n-m+1)种取法。
二次项定理:
(a+b)^n=∑(0<=k<=n)C(k,n)*(a^k)*(b^(n-k))
友情证明:可爱的数学归纳法
当n=1时,(a+b)^1=C(0,n)*(a^0)*(b^1)+C(1,n)*(a^1)*(b^0)=a+b成立
假设当n=m时命题成立,当n=m+1时:
(a+b)^(m+1)=(a+b)(a+b)^m
=(a+b)∑(0<=k<=n)C(k,m)*(a^k)*(b^(m-k))
=...=∑(0<=k<=m+1)C(k,m+1)*(a^k)*(b^(m+1-k))
那么,二次项定理有什么用呢?
我可以负责任的告诉你,这个数学里是经常考的,2017年的浙江高中数学省赛卷第一题就是这个东西,它可以被用于证明可爱的费马小定理...我知道你心里已经开始喊停了...
但数学和信息是分不开的,数学班的同学告诉我们数学老师在数学班里讲树还有剪枝,数学奥林匹克命题人讲座(简称命题人)的《组合问题》的编写者之一就是毕业于计算机系的...
所以还是对数学好点吧。
讲正事,想知道浙江省省赛卷第一题是怎么出的吗?(不想知道,我还是会讲)
二次项定理的直接运用,不要你计算,我们把他变成信息题,如下:
题目:给定一个多项式(ax+by)^k,求出多项式展开后的x^n*y^m项的系数,对10007取模。
0<=n,m<=k<=1000,n+m=k,0<=a,b<=1000000。
根据二次项定理,有(ax+by)^k=∑(0<=i<=k)C(i,k)*(a^i)*(b^(k-i))*(x^i)*(y^(k-i))
所以(x^n)*(y^m)的系数即为C(n,k)*(a^n)*(b^m),直接计算就好。
数学题是不是很简单,只不过算的很烦,然而信息就不存在这种问题了,所以我爱信息,呦吼吼!
隔板法
隔板法又称插空法,就是在n个元素间插入(m-1)个板,即把n个元素分成m组的方法。
eg:
n个球和m个袋子,已经有大佬总结得可好了,棒棒_qwq_(颜文字中毒期)
这里呢我们再小小的分析一下球和袋子的问题:
1.将n个不同的球放到m个相同的袋子里有多少种方案?(没有空袋子哦)
用f[i][j]表示将i个不同的球放到j个相同的袋子,并保证每个袋子里都有球的方案数。
我们考虑第i个球是不是单独放的,f[i][j]=f[i-1][j-1]+f[i-1][j]*j
答案是f[n][0]+f[n][1]+...f[n][m].时间复杂度是O(nm)
以上为ppt原话,反正我是没怎么懂那个式子是怎么出来的,各位大佬可能懂了吧,我太菜了啊~~~那么,不懂的和我一样的蒟蒻们来看一下我的思路吧:(来自一位蒟蒻的分享)
f[i][j]表示将i个不同的球放到j个相同的袋子中,
假设前面的i-1个球都放好了,放在了j个袋子里,其方案数为f[i-1][j],此时还有一个球要和哪一坨球同居呢?有j个袋子,有j种选择,所以为f[i-1][j]*j(乘法原理,不要告诉我你不会,这真的是小学数学) 。
假设前i-1个球放在了j-1个袋子里,那么第i个球一定在剩余的空袋子里(保证每个袋子里都有球)已有的方案数为f[i-1][j-1].
加一加,就得到了大佬ppt上的式子:f[i][j]=f[i-1][j-1]+f[i-1][j]*j
2.将n个相同的球放在m个相同的袋子里有多少种方案?
由于袋子是相同的,我们通过保证球数是单调不减的来防止重复统计。用f[i][j]表示将i个相同的球放到j个相同的袋子里的方案数。
考虑第一个袋子是否放球,如果放的话,由于球数单调不减,我们必须在每个袋子里都放一个球。
如果不放的话,那我们直接考虑后面的袋子。
f[i][j]=f[i-j][j]+f[i][j-1].时间复杂度O(nm)
集训DAYn——组合数学(1)的更多相关文章
- 集训DAYn——拉格朗日插值法
看zzq大佬的博客,看到了这个看似很深奥的东西,实际很简单(反正比FFT简单,我是一个要被FFT整疯了的孩子) 拉格朗日插值法 是什么 可以找到一个多项式,其恰好在各个观测点取到观测到的值.这样的多项 ...
- 2018.10.30 uoj#273. 【清华集训2016】你的生命已如风中残烛(组合数学)
传送门 组合数学妙题. 我们把这mmm个数都减去111. 然后出牌的地方就变成了−1-1−1. 然后发现求出每个位置的前缀和之后全部都是非负数. 考虑在最后加入一个−1-1−1构成一个m+1m+1m+ ...
- 牛客国庆集训派对Day4 I-连通块计数(思维,组合数学)
链接:https://www.nowcoder.com/acm/contest/204/I 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...
- uoj#273. 【清华集训2016】你的生命已如风中残烛(组合数学)
传送门 一道打表题 我们把那些普通牌的位置看成\(-1\),那么就是要求有多少个排列满足前缀和大于等于\(1\) 考虑在最后放一个\(-1\),那么就是除了\(m+1\)的位置前缀和都要大于等于\(1 ...
- 2019暑期集训第二讲 - 组合数学&概率&数学期望
A - 容斥原理(CodeForces - 451E) 二进制状态压缩暴力枚举哪几个花选的个数超过了总个数,卢卡斯定理求组合数,容斥原理求答案 可以先把每个花的数量当成无限个,这样就是一个多重集的组合 ...
- 洛谷 P6672 - [清华集训2016] 你的生命已如风中残烛(组合数学)
洛谷题面传送门 题解里一堆密密麻麻的 Raney 引理--蒟蒻表示看不懂,因此决定写一篇题解提供一个像我这样的蒟蒻能理解的思路,或者说,理解方式. 首先我们考虑什么样的牌堆顺序符合条件.显然,在摸牌任 ...
- 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!
前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...
- 2014暑假ACM13级一批集训内容
2014 这个暑假,我大一的暑假来吧!!! 2014暑假ACM13级一批集训内容 集训期间时间安排: 周一到周六 上午:8:00-11:30 下午:2:00-5:30 晚上7:00-9:30 周日自由 ...
- NOIP2018赛前停课集训记(10.24~11.08)
前言 为了不久之后的\(NOIP2018\),我们的停课从今天(\(Oct\ 24th\))起正式开始了. 本来说要下周开始的,没想到竟提早了几天,真是一个惊喜.毕竟明天有语文考试.后天有科学考试,逃 ...
随机推荐
- awk命令学习(1)
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- BR(BoomerangRobot)机器人项目
项目宗旨:推动机器人技术及相关知识的普及,增进广大机器人DIYer们的交流,提高爱好者们自身的专业水平,项目提供以机器人BR(boomerangrobot)为硬件平台,ROS(robot operat ...
- Java集合-----Set详解
Set是没有重复元素的集合,是无序的 1.HashSet HashSet它是线程不安全的 HashSet常用方法: add(E element) 将指定的元素添加到此集合(如果尚未存 ...
- hashcat 中文文档
hashcat 描述 hashcat是世界上最快,最先进的密码恢复工具. 此版本结合了以前基于CPU的hashcat(现在称为hashcat-legacy)和基于GPU的oclHashcat. H ...
- 设计模式之Builder(建造者)(转)
Builder模式定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以 ...
- ETL面试题集锦
1. What is a logical data mapping and what does it mean to the ETL team? 什么是逻辑数据映射?它对ETL项目组的作用是什么? 答 ...
- Map集合——双列集合
双列集合<k, v> Map: Map 和 HashMap是无序的: LinkedHashMap是有序的: HashMap & LinkedHashMap: put方法: 其中,可 ...
- Linux服务器---邮件服务器dovecot
安装dovecot Dovecot是CentOS系统中著名的POP3/IMAP服务器实现.POP3/IMAP是从邮件服务器中读取邮件时使用的协议,POP3将邮件全部从服务器中拖取下来:IMAP则每次从 ...
- web3.js编译Solidity,发布,调用全部流程(手把手教程)
web3.js编译Solidity,发布,调用全部流程(手把手教程) 下面教程是打算在尽量牵涉可能少的以太坊的相关工具,主要使用web3.js这个以太坊提供的工具包,来完成合约的编译,发布,合约方法调 ...
- jvm 工作原理
作为一名Java使用者,掌握JVM的体系结构也是必须的. 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java ...