首页 > 其他分享 >闲话 23.1.20

闲话 23.1.20

时间:2023-01-20 21:11:07浏览次数:55  
标签:bmatrix begin end Bmatrix 闲话 sum 20 23.1 frac

闲话

明天就过年了!
明天很可能没有闲话 那就在这里祝每个我闲话的读者新年快乐吧!
新年一定要快乐啊!首先得快乐才能想接下来的事呢!

中午打了打《德军总部·新秩序》
深感现在没有心力去打硬核射击游戏了(
当然如果你给我一个呼吸回血我还是能打的(

image

没啥可写的哦(
啊我还要封装板子 就写到这吧

今日推歌:Alexis - 雄之助 feat. 初音ミク

求斯特林数

第二类斯特林数·行

第二类斯特林数 \(\begin{Bmatrix} n \\m \end{Bmatrix}\) 表示把 \(n\) 个不同元素划分成 \(m\) 个相同的集合中(不能有空集)的方案数。

给定\(n\),对于所有的整数 \(i\in[0,n]\),你要求出 \(\begin{Bmatrix} n \\i \end{Bmatrix}\)。对 \(167772161\) 取模的值。

\(1\le n \le 2^{18}\)。

熟知

\[m^n = \sum_{i = 0}^m \binom{m}{i} \begin{Bmatrix} n \\i \end{Bmatrix} i! \]

可以组合意义得到这个公式。左侧就是 \(n\) 个元素随意放入 \(m\) 个有标号集合中,可以存在空集的种类数。然后我们首先枚举 \(i\) 个有标号集合,直接对选出的这些可视为无标号的集合计算方案数得到右侧。

作二项式反演得到

\[\begin{Bmatrix} n \\m \end{Bmatrix} m! = \sum_{i = 0}^m (-1)^{m - i} \binom{m}{i} i^n \]

拆开组合数后得到

\[\begin{Bmatrix} n \\m \end{Bmatrix} = \sum_{i = 0}^m \frac{(-1)^{m - i}}{(m - i)!} \frac{i^n}{i!} \]

这是标准的卷积形式。直接做一次卷积即可,复杂度为 \(O(\text M(n))\)。

Submission.



第二类斯特林数·列

给定 \(n,k\),对于所有的整数 \(i\in[0,n]\),你要求出 \(\begin{Bmatrix} i \\k \end{Bmatrix}\) 对 \(167772161\) 取模的值。

\(1\le n, k < 2^{17}\)。

考虑集合数量是相同的,所以可以对每个集合构造生成函数,然后求 \(k\) 次幂即可。
考虑相同的集合不好作组合意义,我们转换成不同的集合,然后构造 egf 组合,最后答案除以 \(k!\) 即可。

对单个盒子,我们构造 egf 为

\[F(x) = \sum_{i \ge 1} \frac{x^i}{i!} = e^x - 1 \]

然后可以写出

\[\begin{Bmatrix} n \\k \end{Bmatrix} = \frac{1}{k!}[x^n/n!](e^x - 1)^k \]

直接计算即可。复杂度为 \(O(\text M(n))\) 或分治 FFT。

Submission.



第一类斯特林数·行

第一类斯特林数 \(\begin{bmatrix}n\\ m\end{bmatrix}\) 表示将 \(n\) 个不同元素构成 \(m\) 个圆排列的数目。

给定 \(n\),对于所有的整数 \(i\in[0,n]\),你要求出 \(\begin{bmatrix}n\\ i\end{bmatrix}\) 对 \(167772161\) 取模的值。

\(1\le n < 2^{18}\)。

熟知

\[x^{\overline{n}} \sum_{i = 0}^n \begin{bmatrix}n\\ i\end{bmatrix}x^i \]

证明可以考虑归纳法。

对于求幂相关的构造,一般是寻找共性后分治求解。在本题中我们可以发现

\[x^{\overline{2n}} = x^{\overline{n}} (x + n)^{\overline{n}} \]

不妨考虑从 \(x^{\overline{n / 2}}\to x^{\overline{n}}\) 的倍增过程,过程中适当地乘入 \((x + n)\) 即可。设 \(f(n) = x^{\overline{n}}\),我们需要的就是从 \(f(x)\) 得到 \(f(x + n)\),容易发现这是个点值平移的过程。

可以发现

\[\begin{aligned} f(x + k) &= \sum_{i = 0}^n f[i](x + k)^i \\ &= \sum_{i = 0}^n f[i]\sum_{j = 0}^i \binom{i}{j} x^j k^{i - j} \\ &= \sum_{j = 0}^n \left(\sum_{i = j}^n \frac{f[i]}{i!} \times \frac{k^{i - j}}{(i - j)!}\right) \frac{x^j}{j!} \\ &= \sum_{j = 0}^n \left(\sum_{i = 0}^{n - j} \frac{f[i + j]}{(i + j)!} \times \frac{k^{i}}{i!}\right) \frac{x^j}{j!} \end{aligned}\]

这内部是一次卷积可以解决的问题,我们直接设 \(G[i] = F[n - i] / (n - i)!\) 后代替原式中的这部分即可。因此可以 \(O(\text M(n))\) 地解决点值平移的问题。

应用回原问题后只需要再做一次乘法,总时间复杂度 \(T(n) = T(n / 2) + O(\text M(n)) = O(\text M(n))\)。

Submission.



第一类斯特林数·列

给定 \(n,k\),对于所有的整数 \(i\in[0,n]\),你要求出 \(\begin{bmatrix}i\\ k\end{bmatrix}\) 对 \(167772161\) 取模的值。

\(1\le n, k < 2^{17}\)。

考虑集合数量是相同的,所以可以对每个集合构造生成函数,然后求 \(k\) 次幂即可。
考虑相同的集合不好作组合意义,我们转换成不同的集合,然后构造 egf 组合,最后答案除以 \(k!\) 即可。

对于一个环的情况可以直接对 \(\begin{bmatrix}n\\ 1\end{bmatrix}\) 构造生成函数,也就是

\[F(x) = \sum_{n \ge 0} \begin{bmatrix}n\\ 1\end{bmatrix} \frac{x^n}{n!} = \sum_{n \ge 0} \frac{x^n}{n} = \ln \frac{1}{1 - x} \]

最后一步见

然后自然可以写出

\[\begin{bmatrix}n\\ k\end{bmatrix} = \frac{1}{k!}\left[\frac{x^n}{n!}\right]\left(\ln \frac{1}{1 - x}\right)^k \]

直接实现即可,总时间复杂度为 \(O(\text M(n))\)。

Submission.

回头会封装一个实现扔在板子里。

标签:bmatrix,begin,end,Bmatrix,闲话,sum,20,23.1,frac
From: https://www.cnblogs.com/joke3579/p/chitchat230120.html

相关文章

  • 亚信科技AntDB数据库荣获2022年度技术卓越奖
    近日,业界知名IT垂直媒体IT168发布了“2022技术卓越奖”主题奖项,亚信科技AntDB数据库荣获技术卓越奖。2022“技术卓越奖”由行业CIO/CTO大咖、技术专家及IT媒体三方联合评......
  • 2022大数据产业年度“国产化优秀代表厂商”榜单发布,亚信科技AntDB数据库位列其中
    亚信科技也做数据库?实际上亚信科技AntDB是我国最早的国产数据库产品之一,是在21世纪初国外品牌数据库无法满足我国暴涨的通信需求的情况下,为了帮助通信运用商更好地应对超高......
  • HGAME 2023 Week2 Pwn YukkuriSay题解
    HGAME2023Week2PwnYukkuriSay题解检查保护:拿到文件先checksec一下:64位程序,开启canary和nx保护,没有开启PIE(可以使用绝对地址了)继续往下看,先不着急打开ida,我们先运......
  • 2023牛客寒假集训3
    A-不断减损的时间A-不断减损的时间_2023牛客寒假算法基础集训营3(nowcoder.com)小红拿到了一个数组,她每次操作可以选择一个偶数除以2,可以操作任意次(也可以不操作)。求最......
  • Codeforces Round #844 (Div. 1 + Div. 2, based on VK Cup 2022 - Elimination Round
    《C.EqualFrequencies》  这道题的题意为:一个字符串str上每个字母的数量都一样,为平衡字符串现在给出一个字符串s,问最少改动多少使s变成平衡字符串,并写出该平衡字......
  • 力扣每日一题2023.1.20---1817. 查找用户活跃分钟数
    给你用户在LeetCode的操作日志,和一个整数k。日志用一个二维整数数组logs表示,其中每个logs[i]=[IDi,timei]表示ID为IDi的用户在timei分钟时执行了某个操作......
  • .NET周报【1月第3期 2023-01-20】
    这应该是2023年农历新年前的最后一篇.NET周报,再次预祝大家新年快乐!国内文章看我是如何用C#编写一个小于8KB的贪吃蛇游戏的https://www.cnblogs.com/InCerry/p/building-......
  • P3193 [HNOI2008]GT考试
    先考虑朴素的dp。由于涉及到匹配问题,只有一个串,考虑kmp。状态表示设\(f_{i,j}\)表示长度为\(i\)的字符串,与不吉利串的匹配长度为\(j\)的总方案数。状态转移......
  • 2022年度总结
    目录工作读书生活展望用一百分总结这一年,给自己打80分。一年又一年,时间就像捧在手里的水,悄然逝去也不停留。工作工作节奏一如既往地快。前前后后历经风险预警建设、新......
  • 2023WinterHoliday刷题总结第一弹
    \(2023WinterHoliday\)刷题总结第一弹\(CTF\)\(Web\)1.\(json格式:\)$json['x']=="wllm"\(JSON\)(JavaScriptObjectNotation,JS对象简谱)是一种轻量级的数据交换格式,采......