排列组合 容斥 总结

news/2025/10/13 22:23:42/文章来源:https://www.cnblogs.com/LcukyCat/p/19139555

加法原理

加法原理。很直白的,就是一个用加法来弄的原理。

简单来说,就是做一件事情有 \(n\) 种方法,第 \(i\) 种方法又有 \(a_i\) 个具体的操作方案。那么非常显然,做这件事情就有 \(a_1 + a_2 + \dots + a_{n-1} + a_n = \sum_{i=1}^{n} a_i\) 种方案。

说说具体用途吧:最常见的,DP 里面统计方案数,由于这些解决方案是互不干扰的,也就是说如果选择 \(1\) 类方法就不可能同时选择 \(2\) 类方法,那么很多时候就是把它们加起来啦。

这就是加法原理。

乘法原理

乘法原理,顾名思义,和加法原理一样,当然是用乘法来弄的原理啦!

乘法原理和加法原理不同,它表示的是,做一件事情有 \(n\) 个步骤,第 \(i\) 个步骤又有 \(a_i\) 种具体的操作方案,那么做这件事情一共就有 \(a_1 \times a_2 \times \dots a_{n-1} \times a_n = \prod_{i=1}^{n} a_i\) 中具体的操作方案。

用途吧,就是很多时候考虑统计方案数的时候,要分步骤来考虑——换言之,分类讨论?——总之就是有一个分步骤的阶段的情况下,就要用到乘法原理,把它们乘起来啦。

这就是乘法原理。

全排列

全排列表示有 \(n\) 个互不相同的物品,然后将这些物品全部打乱,重组地去排列,一共有多少种方法。答案显然,\(n \times (n-1) \times (n-2) \times \dots \times 2 \times 1\),定义这个东西为 \(n!\),即 \(n\) 的阶乘。

排列组合

排列,就是指从 \(n\) 个物品中选择 \(m\) 个排成一排。假设它们都互不相同,那么方案数是多少呢?很显然,排在第一个位置有 \(n\) 种选法,第二个位置有 \(n-1\) 种选法,第 \(i\) 个位置有 \(n-i+1\) 种选法,第 \(m\) 个位置有 \(n-m+1\) 种选法,全部乘起来,那就是 \(n \times (n-1) \times (n-2) \times \dots \times (n-m+1)\) 啦!这就定义为 \(A_{n}^{m}\),且有公式 \(A_{n}^{m} = \dfrac{n!}{(n-m)!}\)

组合,同样是从 \(n\) 个物品中选择 \(m\) 个,但是不同的是,它是选择 \(m\) 个,但是只把这东西当做一个集合,并不对其进行排序——对,差别就在于,它比排列少考虑了具体的排序情况!这东西定义为 \(C_{n}^{m}\),也记做 \(\binom{n}{m}\),且有公式 \(C_{n}^{m} = \binom{n}{m} = \dfrac{n!}{(n-m)!\space{}m!}\)。对!就是比排列多除以了一个 \(m!\) 而已,因为不考虑顺序啦。

组合还有一个公式,那就是 \(C_{n}^{m} = C_{n-1}^{m-1} + C_{n-1}^{m}\),这也是求解杨辉三角时的递推公式。为什么呢?因为我们已经考虑完了前 \(n-1\) 个元素的情况,现在多了一个 \(n\) 元素,我们可以考虑选它,那么之前 \(n-1\) 个元素中就只需要选择 \(m-1\) 个了,这就是 \(C_{n-1}^{m-1}\),也可以考虑不选它,那么之前 \(n-1\) 个元素中还需要选择 \(m\) 个,这就是 \(C_{n-1}^{m}\),加法原理加起来就有公式 \(C_{n}^{m} = C_{n-1}^{m-1} + C_{n-1}^{m}\) 啦。

杨辉三角可以 \(O(n^2)\) 预处理出来,因此当 \(n\) 不大且需要使用组合数的时候常用杨辉三角预处理哦。

例题选讲

题太多了,我就挑几道重点讲,其他的带过一下好吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10.13每日总结

今天满课,软件设计+软件开发案例分析+大数据技术+物联网工程,很忙,且开始看中级软件工程师的网课了,,,看起来真的很难,不是我擅长的那一挂,周末外语竞赛的成绩就出来了,,加油!

完整教程:学习 React 前掌握 JavaScript 核心概念

完整教程:学习 React 前掌握 JavaScript 核心概念pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

新学期每日总结(第7天)

今日相较昨日 学习了类与对象

20232422 2025-2026-1 《网络与系统攻防技术》实验一实验报告

实验目的 掌握ELF可执行文件的机器指令修改方法,理解程序执行流控制原理; 理解缓冲区溢出(BOF)漏洞的原理,掌握通过覆盖返回地址改变程序执行流的攻击方法; 学会构造并注入shellcode,理解漏洞利用的完整流程; …

详细介绍:redis特性和应用场景

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实验记录 2025/10/13

2025/10/13 使用配置:yolo11s.yaml from ultralytics import YOLOdef main():# 1. 并非加载预训练模型(这里用 YOLO11n,也可以换成 yolov11s、best.pt 等)# 而是让YAML 定义自己的网络结构model = YOLO(model=r…

newDay09

1.今天课程比较多,晚上简单复习了面向对象的知识,背背单词 2.明天还是再补补java吧 3.感觉自己基础还是太薄弱了,课堂上很多问题答不出来

正睿25csp七连测day5

题面:这场打得很飞舞,\(40pts,rk54\)。 T1 这道题比较考验思维。 我们可以考虑每个点是从最初序列的哪个位置转移过来了(记为 \(from\))。 不难发现,如果最终序列中的几个位置的 \(from\) 相等,那么这几个位置代…

C/C++ 指针详解与各种指针定义 - 指南

C/C++ 指针详解与各种指针定义 - 指南2025-10-13 22:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !i…

14 10.13

上了数据结构 统一建模语言 Java跑步了背了单词

日志|前端框架Vue

Vue是一款用于构建用户界面的渐进式的JavaScript框架1)2)3)v-bindv-onv-if v-else-if v-else = v-showv-forv-实例演示vue生命周期的挂载完成提示

oop.shiyan1

实验1 源代码:1 #include<iostream>2 #include<string>3 #include<vector>4 #include<algorithm>5 6 //模版函数声明7 template<typename T>8 void output(const T& c);9 10 void …

玄机——第一章 应急响应-Linux日志分析 wp

简介 账号root密码linuxrz ssh root@IP 1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割 2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割 3.爆破用户名字典是什么?如果有多个使…

第四周第五天4.5

所用时间:180分钟 代码量(行):0 了解到的知识点: 1.无约束问题方法求解 无约束问题的核心求解方法分为解析法和数值迭代法,前者直接求导找最优解,后者通过逐步迭代逼近最优解 解析法仅适用于目标函数可微且能通…

深入解析:flutter AudioPlayer的使用问题及处理

深入解析:flutter AudioPlayer的使用问题及处理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

11 10.10

学习了看书了

12 10.11

出去玩儿了 学习了

P3330 [ZJOI2011] 看电影

思路 第一眼看去好像并没有什么思路,于是我们通过手算或者暴力搜索打了一个表, 当 \(n = 2\) 时,当 \(k\) 变化时,答案如表所示n\ k 1 2 3 41 (1, 1) (2, 2) (3, 3) (4, 4)2 (0, 1) (3, 4) (15, 16) (24, 25)3 (0,…

09 面向对象基础概念的总结

09 面向对象基础概念的总结面向对象 总结类与对象的定义 类是一个模板,是抽象的,将一些元素的共性集合在一起。 对象是具体的实例,创建对象的过程叫做实例化。方法 方法的定义: 修饰符 返回值 函数名 参数 函数体对…

20232315 2025-2026-1 《网络与系统攻防技术》实验一实验报告

一、实验目标 对一个名为pwn1的linux可执行文件: 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。 注入一个自己…