首页 > 其他分享 >组合数学学习笔记

组合数学学习笔记

时间:2024-02-20 20:00:37浏览次数:23  
标签:组合 个数 long times large 数学 笔记 序列 mod

p3744. 打扑克

直接递推了。

p3745. combination

使用卢卡斯定理切掉。

long long c(long long n,long long m)
{
	return f[n]*g[m]*g[n-m]%mod;
}
long long lcs(long long n,long long m)
{
	if(m==0)
		return 1;
	return lcs(n/mod,m/mod)*c(n%mod,m%mod)%mod;
}

3342. 【模板】卢卡斯定理/Lucas 定理

同上,只用改取模和输入。

P118. 「一本通 6.1 练习 3」越狱

结论:一共有 \(m^n\) 种可能,不可以越狱的可能,一共有 \(m*(m-1)^{n-1}\) 种。所以答案是二者相减。

原本需要扩展欧拉定理去算幂取模,但是对于这道题,快速幂解决即可。

p3749. Rooks LightOJ - 1005

对于 \(n\) 列,有 \(k\) 个需要摆放;对于 \(n\) 行,也需要摆放 \(k\) 个.

所以最终答案数是

\[\large C_{n}^{k}*A_{n}^{k} \]

要开 \(\text{long long}\) 。

P2280. 牡牛和牝牛

据说有 DP 做法,但是我不会。。

所以我选择组合数学推结论(洛谷上说不用卢卡斯定理,但是我还是用了)

结论:

\[ans=\sum_{i=0}^{n}\large C_{n-(i-1)\times k}^{ i} \]

对于 \(C\) ,卢卡斯秒了。但是好像不用。。。

3328. [ABC156E] Roaming

有点小难。。。

考虑 \(k\) 次移动后的空房子的最大值,显然是 \(k\) ,但是 \(k\) 有可能大于 \(n\),所以是\(\min(k,n-1)\) 个,对于每个 \(i \in [0,\min(k,n-1) \ ]\),答案个数是 \(\large C_{n}^{ \ i}\)(感性理解一下)

考虑 \(k\) 次移动后有人的房子,即是对于每个\(i \in [0,\min(k,n-1) \ ],n-1\) 个人会插在 \(n-i-1\) 个地方,答案个数是 \(\large C_{ \ n-1}^{ \ n-i-1}\) ,注意这里是 \(n-1\) 而不是 \(n-i\) 。。。

最终结果即是

\[\sum_{i=0}^{\min(n-1,k)} \large {(C_{n}^{i}\times C_{n-1}^{n-i-1}) }\text{ mod } p \]

p3751. X-factor Chain

结论题。

——msb大佬

输出的长度就是 \(n\) 的质因数个数(有重复)。

而第二个序列的个数就有一点难搞了:

从容斥的角度去想,这 \(k\) 个质因数想要排满,第一位有 \(1\) 种,第二位有 \(2\) 种,第 \(n\) 位就有 \(n\) 种,总共有 $k! $ 种。

那么考虑以下情况:如果最后一位是 \(k_i\) ,那么前面的每一位都要有这个 \(k_i\) ,那么对于每一个 \(k_i\) ,就有 \(k_i!\) 种不合法的结果。(\(k_i\) 代表第 \(k\) 个质因数出现的个数)

即最终答案是:

\[\frac{k!}{\prod_{1}^{k}k_i!} \]

中间的细节,我没有记录每一个阶乘,都是现算的,但是能过。

P526. [HNOI2012]排队

纸张高精,抄的结论。

P2022. [Sdoi2016]排列计数

和上面的难度一样,都是绿题,但是这道题我一节课就推出来了。

首先,考虑先排在原位的数,即 \(a[i]=i\) 的那 \(m\) 个,显然,有 \(\large C_{ \ n}^{ \ m}\) 种。

接下来,考虑排剩下的不在原位的 \(n-m\) 个数,这里要求在剩下的位置里, $ a[i]!=i$ ,可以考虑错排法,结论:

\[D(i)= \begin{cases} 0&,i=1 \\ 1&,i=2 \\ (i-1)\times (D(i-1)+D(i-2))&,otherwise \end{cases} \]

证明可参考课件。

我们在处理 \(D(i)\) 的时候,需要用数组记忆化,处理 \(C\) 的时候,要用费马小定理求逆元。

最终答案即为:

\[C_{n}^{m}\times D(n-m) \mod (1e9+7) \]

P515. [ZJOI2010]Perm 排列计数

很有意思。题目的叙述转换成图论模型就是:求大小为 \(n\) 的小根堆有多少个。

需要树上 \(dfs\) ,用 \(lucas\) 算答案。

P2281. BZOJ 4403序列统计

依然是组合数。但是 \(lucas\) 的时候要有边界。。

3327. [ABC172E] NEQ

排列+错排。

考虑序列 \(A\) 的个数,显然是 \(A_{m}^{n}\) 种。

那么题目上说要求 \(\forall A_i \neq B_i,A_j \neq A_i,B_i\neq B_j\)

显然,B 序列是 A 的错排。在通常的定义中,错排 \(D(n)=(n-1)\times (D(n-1)+D(n-2))\) 是针对于有 \(n\) 个可选数、且序列长度为 \(n\) 的。

但是这里是有 \(m\) 个可选数、且序列长度为 \(n\),并有 \(m\ge n\)。

可以考虑加法原理,即 \(B\) 序列的选择数一定是 \(D(n)+f(n)\) 的形式,这里可以找个例子来理解一下:

若 \(n=3,m=4\),则 \(A\) 序列的个数为 \(A_{m}^{n}=A_{4}^{3}=24\)。

对于一个 \(A=1,2,3\),\(B\) 的全部合法序列为:

\[\begin{aligned} 2,3,4 \\ 2,4,1 \\ 2,3,1 \\ 3,4,1 \\ 3,2,4 \\ 3,4,2 \\ 3,1,2 \\ 3,1,4 \\ 4,3,1 \\ 4,1,2 \\ 4,3,2 \\ \end{aligned} \]

总共 \(11\) 种。可以看出,除过与 \(A\) 序列元素相同的排法,在第 \(N\) 位上,会有 \(m-n\) 个 \(A\) 序列中没有的元素,在本例中即是数字 \(4\)。而对于剩下 \(n-1\) 位,有 \(D(n-1)\) 种排法。

所以这道题的答案是错排公式是改编版( \(M,N\) 代表题中给出数据 ) :

\[D(n)= \begin{cases} 1 &,n=0\\ M-N&,n=1 \\ (M-N)\times D(n-1)+(n-1)\times(D(n-2)+D(n-1))&,otherwise \end{cases} \]

P514. [SDOI2010] 古代猪文

小数论全家桶。但是比较简单。

答案显然是

\[\large G^{\sum_{d=1,d|n}^{n}C_{n}^{d}} \mod 999911659 \]

但是直接使用逆元求 \(C\) 会炸时空。我们考虑扩展欧拉定理:

\[a^b \equiv a^{b \mod φ(m)} \pmod m,\gcd(a,m)=1 \]

且由于 \(m=999911659\) 是个质数,所以 \(φ(m)=m-1=999911658\)

所以上式等价于:

\[\large G^{(\sum_{d=1,d|n}^{n}C_{n}^{d} )\mod 999911658} \mod 999911659 \]

但 \(999911658\) 是个合数,所以我们把它进行质因数分解,这样就可以用 lucas 去求 \(C\),然后用中国剩余定理合并答案即可。

标签:组合,个数,long,times,large,数学,笔记,序列,mod
From: https://www.cnblogs.com/ccjjxx/p/18023936

相关文章

  • 一文搞懂Flink Window机制 Windows和 Function 和 Process组合处理事件
    一文搞懂FlinkWindow机制和Function和Process组合处理事件Windows是处理无线数据流的核心,它将流分割成有限大小的桶(buckets),并在其上执行各种计算。Windows是处理无线数据流的核心,它将流分割成有限大小的桶(buckets),并在其上执行各种计算。窗口化的Flink程......
  • 数论学习笔记
    如题。链接:https://h.hszxoj.com/d/hzoj/training/64ae62d5016fac9fb4da7086?uid=4823336.cf1444A洛谷link小数学题。gxyz上的很好A,但是CF上的数据确实超级大。先判断\(\displaystyleq/p\)是否成立,若不成立则直接cout<<p;否则就要遍历\(q\)的质因数,然后再找对应质......
  • 递归学习笔记
    本文同步发表在洛谷博客我们充分发扬人类智慧:将递推和递归混为一谈在\(dp\)的基础上来学递归然后把递推和\(dp\)混为一谈然后我就发现:™的我\(dp\)没学好!然后去学\(dp\),然后发现我递推没学好,所以四舍五入我递归也学不好,那就不学了!好了让我们步入正题正文......
  • 高斯消元 学习笔记
    \[\Large\text{GaussianElimination}\]数学上,高斯消元法(或译:高斯消去法),是线性代数规划中的一个算法,可用来为线性方程组求解。——百度百科说实话,我不相信这是高斯发明的。感觉像是个小学生都学过的加减消元法。它的时间复杂度与方程个数、未知数个数有关,一般来讲,是\(O......
  • 数学题目合集
    翻转性质:如果翻转的区间所有数对个数为偶,则整个逆序对个数奇偶性不变;否则改变。证明:首先翻转区间外的逆序对个数不会变化,翻转区间与翻转区间外的逆序对个数也不会变化。假设翻转前翻转区间内有\(cnt\)个逆序对,则翻转后有\(len\times(len-1)/2-cnt\)个逆序对,差为\(len\tim......
  • Vue学习笔记 1-- 环境搭建
    第一步:安装vscode第二步:安装nodejs--node-v14.17.6-x64(需要注意版本--版本过高或过低均会导致程序打包运行问题)——一路默认,会安装对应的npm注:版本和程序中使用的依赖包不一致会导致各种打包异常......,因此需根据自身项目实际情况安装对应版本==>程序打包问题npmi/npmi......
  • C++ 模板的笔记2
    C++模板的笔记2关于可变参函数模板借鉴了一部分笔记,感谢大佬类模板中的嵌套类模板可以嵌套其他类模板,就像普通类可以嵌套其他普通类一样。嵌套的类模板可以访问外部类模板的成员,包括私有成员。示例:#include<iostream>usingnamespacestd;template<typenameT>classO......
  • 解决方案 | 笔记本电脑能连上WIFI,但是无Internet显示地球图标,怎么回事?(win10)
    一、背景任务栏托盘区显示地球图标,但是实际上可以上网。   疑难诊断一般是这种情况: 二、可能的有效解决方案 0方案0:使用360断网急救箱傻瓜式修复个人制作|360断网急救箱新版-2.0版单文件绿色版分享(解决99%的电脑无法上网问题)https://www.cnblogs.com/issacne......
  • [学习笔记]哈希与哈希表
    1.定义我们定义一个把字符串映射到整数的函数\(f\),这个\(f\)称为是Hash函数。我们希望这个函数\(f\)可以方便地帮我们判断两个字符串是否相等。词汇“映射”映射意为将一个集合中的任意元素和另一个集合中的元素一一对应。(请大佬指正)2.思想Hash的核心思想在于,将输入......
  • Go语言精进之路读书笔记第30条——使用接口提高代码的可测试性
    Go语言有一个惯例是让单元测试代码时刻伴随着你编写的Go代码。单元测试是自包含和自运行的,运行时一般不会依赖外部资源(如外部数据库、外部邮件服务器等),并具备跨环境的可重复性(既可在开发人员的本地运行,也可以在持续集成的环境中运行)。30.1实现一个附加免责声明的电子邮件发送函......