P14686 Charity Raffle

前置知识:插板法模板,容斥原理(只看懂 OI-Wiki 第一节水平)。
才不告诉你就是作者的水平啦。

  1. 学会读题
    问的是结果的种类!不是奖品券的排列组合!

  2. 尝试思考
    这题我会啊!\(k\) 分成 \(n\) 组,插板法唐题啊!

  3. 提出问题
    要求每组都不超过 \(m\),还有一个神奇的使用限制。

  4. 分析问题
    假如 2024ing 决定通过写一个简单的 dfs 解决前面两个问题打暴力,
    如何判断一个序列是否合法?

  5. 举出例子

    • 考虑:形如 \(\set{0,0,0,0,\cdots,k}(k>0)\) 的序列一定非法。
    • 总结:全零中有一个 \(2\) 以上的数字一定非法。
    • 总结:降序排序后第一项比第二项大二及以上一定非法。
    • 考虑:末项是最大值,且比第二大的数大,一定非法。
    • 总结:最大值只有一个,且第二大的数在他前面,一定非法。
  6. 尝试思考
    4 中三五两条限制能否完美刻画限制?
    或者说,满足了限制,能否构造出一种合法方案?
    若非零数仅有一个,则操作 \((i,n)\),可以满足。
    若非零数只有两个(这里选择前两大的数字),可以通过更替操作满足。
    若还有其他数字,可在完成以上操作后一次次去干。

  7. 刻画要求
    要求序列最大值不超过 \(m\),且最大值恰好比次大值大一,
    同时末项不是唯一最大值的,插板法唐题序列个数。

  8. 继续挣扎
    用一个写橙题 dp 的人的眼光,不枚举最大值,这题没法整。
    发现枚举最大值之后,直接消去一个限制,很像正解。
    看一眼时空限制,随便唐式分讨拆分啊。
    下设 \(x\) 分到 \(n\) 个数里面,每个数不超过 \(m\) 方案数为 \(f(x,n,m)\)
    下设最大值为 \(q\)
    分成两种情况:

    • 最大值只有一个
      钦定最大值和次大值,剩下的变成插板法唐题,要求每组不超 \(q-1\)
      这里注意作者开始没想到的一点,最大值要在次大值前面,
      方案数为 \(\frac{(n-1)(n-2)}2\)
      答案为 \(\sum_{q=1}^m [(n-2)(n-1)/2\cdot f(k-2q+1,n-2,q-1)]\)
    • 最大值不止一个
      钦定两个最大值,剩下的变成插板法唐题,要求每组不超 \(q\)
      答案为 \(\sum_{q=1}^m[n(n-1)\cdot f(k-2q,n-2,q)]\)
  9. 略见分晓
    问题转化成快速求 \(f(x,n,m)\)

  10. 思考一下
    不会……

  11. 看视频解锁 OI-Wiki
    这里也可以自己去看,或者看下面这个很不严谨的大白话。
    首先复习一下,由插板法,如果没有限制,答案就是 \(C_{x+n-1}^{n-1}\)
    由容斥,我们知道,
    答案是 无限制-(至少一个不符合条件-至少两个不符合条件+至少三个不符合条件-...)
    而“至少……个不满足条件(也就是超过 \(k\))”这个条件,
    本质上分两步,一步是枚举钦定哪几个组非法,然后再对应求方案。
    前面一个就是组合数定义啊!
    后面的可以考虑减去他们的下界,然后就转化成插板法唐题了!
    开心!
    推一下式子:

\[f(x,n,m)=\sum_{i=0}^{\lfloor\frac x {m+1}\rfloor} [(-1)^i\cdot C_n^i\cdot C_{n+x-im-i-1}^{n-1}] \]

  1. 一步之遥
    式子就推到这里,展开太恶心了,但能过吗?
    看起来时间复杂度不太乐观,预处理阶乘和逆元不算,
    后面时间复杂度看起来是什么调和级数,据说是 \(O(k\ln k)\) 级别的,
    其他题解(当然思路好像不太一样)说这题应该是线性,总之试一下再说了。
posted @ 2026-02-23 23:33  2025ing  阅读(0)  评论(0)    收藏  举报