首页 > 其他分享 >组合计数杂题

组合计数杂题

时间:2022-11-06 12:22:44浏览次数:39  
标签:le 组合 limits sum 那么 计数 区域 杂题 数列

ABC276G

【题意】
给定 \(n, m\),求出满足以下条件的数列的个数:

  • 数列长度为 \(n\)。
  • 数列的每一个数都在 \([0,m]\) 之间。
  • 数列的相邻两个数模 \(3\) 不同余。

【思想】
组合计数问题,需要利用一些一一映射,将要算的东西改写成能算的东西,比如 \(\binom{n}{k}, \begin{Bmatrix}n\\k\end{Bmatrix},\begin{bmatrix}n\\k\end{bmatrix}\)(选择,子集,轮换)。


【分析】
“模 \(3\) 不同余”这个条件首先一看就不是很好直接算,我们考虑构造差分数组 \(b\),满足对于 \(i \in [2,n]\) 有 \(3 \nmid b_i\)。

然后显然考虑拆分成 \(b_i / 3\) 和 \(b_i \% 3\)。记 \(x_i = b_i \% 3, y_i = b_i / 3\),则有对于 \(i = 1\),\(x_i \in \{0,1,2\}\);对于 \(i > 1\),\(x_i \in \{1,2\}\)。

我们先考虑整块,也就是钦定了一套 \(x_i\) 之后,\(y_i\) 的个数怎么算?也就是计算使得 \(\sum \limits_{i = 1} ^ n y_i \le \lceil \cfrac{m - \sum x_i}{3} \rceil\) 的方案数。可以发现这个东西只和 \(\sum x_i\) 有关,那么如果计算上述式子的时间为 \(T\),那么我们可以枚举 \(x_i(i \le [2,n])\) 存在多少个 \(1\),从而得到存在多少个 \(2\)。相同的方案数可以二项式求出,那么可以 \(O(n) \times T\)。

那么问题转化为:计算使得 \(\sum \limits_{i = 1} ^ n y_i \le t\) 的方案数。我们知道 \(\sum \limits_{i = 1} ^ n y_i = t\) 的方案数是插板法算的,那么一种方法是预处理出所有 \(t\) 的答案,那么每次询问可以 \(O(1)\) 得到解。总时间复杂度 \(O(n \log t_{\max} + n) = O(n \log t_{\max})\),其中 \(t_{\max} \sim m\)。

还有一种方法:

引理:\(y_i\) 都是自然数,使得 \(\sum \limits_{i = 1}^n y_i \le t\) 的方案数为 \(\binom{n + t}{n}\)

证明:考虑插板法的过程。对于 \(\sum \limits_{i = 1}^n y_i = t\) 的方案数,也就相当于 \(t + n\) 个球,插 \(n - 1\) 个板,分成 \(n\) 个区域。

那么我们可以增加一个区域,这个区域表示把这些球扔掉,其他 \(n\) 个区域表示分成的 \(n\) 个区域。那么也就是把 \(\le t\) 个球分成 \(n\) 个区域。因此是一共 \(t + n + 1\) 个球,插 \(n\) 个板,分成 \(n + 1\) 个区域,答案为 \(\binom{n + t}{n}\)。

标签:le,组合,limits,sum,那么,计数,区域,杂题,数列
From: https://www.cnblogs.com/Zeardoe/p/16862372.html

相关文章

  • 从vue3+TS项目中导入vue组件路径不识别的问题中认识vue3的组合式API中的常用组件
    最近在使用vite创建vue3+ts项目时,不经意发现一些小问题,对这些小问题进行深究的时候,会加深我对vue3的一些新理解今天碰到的一个问题就是我使用vite创建一个vue3+Ts项目后,......
  • 组合模式
    组合模式用透明组合模式实现教材中的“文件夹浏览”这个例子。 类图  java  packagerjsj.no10;publicclassClient{publicstaticvoidmain(St......
  • 计数质数
    给定整数n,返回所有小于非负整数 n 的质数的数量。示例1:输入:n=10输出:4解释:小于10的质数一共有4个,它们是2,3,5,7。示例2:输入:n=0输出:0示例3......
  • 巧用隔板法快速攻破排列组合难题
    如果让你把\(7\)个大小相同的橘子分给\(4\)个小朋友,要求每个小朋友至少分到\(1\)个橘子,问一共有多少种不同的分法?看完问题后,你能快速得出答案吗?如果难倒你的话,那就说......
  • AGC020 C~F【杂题】
    C.MedianSum给定\(n\)个整数组成的集合\(S=\{a_1,a_2,\cdots,a_n\}\),求\(S\)的非空子集和的中位数。\(n,a_i\leq2\times10^3\),时限\(\text{2.0s}\)。记......
  • Codeforces 杂题记录
    CF1753A2(调整、贪心)考虑钦定\([1,n]\)分成一段,调整就是把贡献取相反数。CF1753B每次把\((i+1)\)和\(i!\)合并成一个\((i+1)!\),看能不能合并到\(x!\)。CF1753C(......
  • 【杂题汇总】NOIP 2022 杂题目录
    这里单纯的是一些题目,看到有意思的题会在这里记下来,也可以当做Todolist啦解析的话在这里[ARC147E]Examination[CF573E]BearandBowling[CF498D]TrafficJamsi......
  • 杂题泛做
    \(\text{[AGC034C]Tests}\)很容想到二分答案和\(c_i\)比较固定的选取方法然后就不会了。。。接下来就是要发现性质的时候固定答案时,若此时已有了一组\(a\),考虑对于......
  • 数字n代表生成括号的对数,设计一个函数,用于能够生成所有可能的并且有效的括号组合 回溯
    题目描述:数字n代表生成括号的对数,设计一个函数,用于能够生成所有可能的并且有效的括号组合如  n=2 则输出//['(())','()()']  n=3则输出//['((()))','(()()......
  • 杂题选做2
    P8292题意:有\(n\le10^6\)张卡片,卡片上有权值\(a_i\),有\(m\le1500\)次询问,每次给定\(c_i\)个质数(\(\sumc_i\le18000\)),要求选择的卡片乘积整除每一个给定质数的......