组合数学:从入门到入土

更新ing

菜鸡 wljss 来讲组合数学啦。

组合数学博大精深,主要是爱数数的人上大学了,从模拟赛到NOI都出现过。

一些技巧可以看这里

其实看完上边那个也就没啥好说的了

上例题吧

P1595 信封问题

这里有讲解,直接放代码233

P3197 [HNOI2008]越狱

首先我们可以发现总的方案很好求,就是 mn.

所以我们采用求 补集 的思想

有多少可能不会发生越狱呢?

第一个人有 m 种可能的信仰。

从第二个人开始,每个人的信仰都要和上一个人不同,每个人有 m1 种。

所以答案就是 mnm×(m1)n1

P1057 传球游戏

dp[i][j] 为第 i 个人在第 j 轮拿到球的方案数。

每次考虑一个人的求可能从哪个方向上传过来.

f[i][j]=f[i1][j1]+f[i+1][j1]

当然 1 号和 n 号要特殊处理一下。

P6057 [加油武汉]七步洗手法

总的三元环个数很好求,任意选出 3 个点就能组成,所以总的三元环个数是 Cn3

我们采用求 补集 的思想,不同色的三元环有多少个?

考虑每个点,如果有 d 条白边,那么就有 nd1 条黑边,两两组合就会产生 d×(nd1) 个三元环

考虑这样我们求出来的是啥?考虑对于每个不同色的三元环,会被每对不同色的边各枚举一次,一共会被枚举 2 次.

所以/2后才是真正的不同色三元环个数。

P1535 [USACO08MAR]Cow Travelling S

简单 DP,设 dp[i][j][k] 为走了 k 步,走到坐标 (i,j) 的方案数。

转移的话直接从周围 4 个方向转移就行了。

P1144 最短路计数

普通求最短路的话一定要用DIJ,SPFA早就死了。

f[i]当前情况下 i 的最短路计数

首先初始化 f[1]=1

然后考虑求最短路的过程.

如果 dis[to[i]]>dis[x]+1,由于最短路更新了, 当前情况最短路只能由 x 走过来,f[to[i]]=f[x]

如果 dis[to[i]]=dis[x]+1,最短路没有更新, 当前情况最短路也能由 x 走过来,f[to[i]]+=f[x]

跑最短路的时候更新就行了.

P1450 [HAOI2008]硬币购物

首先每次背包一下答案是对的,但是复杂度太高。

对于这种有选取数量限制的计数题,我们通常枚举有哪些突破了数量限制,然后容斥。

对于这道题来说,我们先用四种面值做一个完全背包。

然后枚举哪些面值肯定会突破限制,这个可以通过 tmp=c(b+1) 来实现,也就是先选出来 b+1 个,再怎么选都会突破限制。

答案并不是 有0个强制突破限制的情况,因为虽然没有强制突破的情况,但因为随便选还是有突破的情况。

所以我们需要减去强制有1个突破的情况。

然后会发现减的有点多,要加上强制有2个突破的情况.以此类推。

P4071 [SDOI2016]排列计数

首先枚举哪些位置满足 ai=i,那么剩下的 nm 个数就需要错排。

所以答案就是 Cnm×f[nm]

P2513 [HAOI2009]逆序对数列

f[i][j] 为用 1 ~ i 组成的序列有j个逆序对的方案数。

我们将每个数一个一个插入原序列,考虑第 i 个数放在原来的序列的哪个位置,由于之前的数都比 i 小,所以如果插在 k 个数后面,就会增加 k 个逆序对。

所以 f[i][j]=k=0min(i1,j)f[i1][jk]

发现后面那一段是连续的一段,可以用前缀和优化一下。

P5664 Emiya 家今天的饭

考虑容斥:合法方案:总方案-不合法方案

总方案很好求,可以 DP ,也可以用 (i=1n(1+j=1ma[i][j]))1 来求。

如果一个方案不合法,一定是某个食材出现次数超过了 k2 次,并且能造成这个的最多只有 1 个食材。

枚举哪个食材不合法,DPg[i][j][k] 为前 i 个里面,一共选了 j 个,其中 id 选了 k 个的方案数

时间复杂度 O(mn3) ,只有84分

发现同时记录 jk 就有点多余,重新设 g[i][j] 为前 i 个里,id 选的比其他的多 j 个时的方案数。

时间复杂度就成了 O(mn2),可以过,但是因为可能 j 有可能是负数,所以需要整体下标加上 n

posted @   wljss  阅读(588)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示