当前位置: 首页 > news >正文

251105B. 换来换去/card

251105B. 换来换去/card

计数将 \(n\) 个区分的物品划入任意个大小 \(\ge 2\) 的不区分集合的方案数。

\[n\le 10^7 \]


首先,这个问题看起来很像贝尔数:

计数将 \(n\) 个区分的物品划入任意个不区分集合的方案数。

这个描述中实际上隐含了集合大小 \(\ge 1\) 的条件。

考虑贝尔数的 EGF\(\exp(\exp(x)-1)\),这里内层的 \(-1\) 减去了集合为空的情况。

类似地,考虑回原问题,由于集合大小 \(\ge 2\)。我们减去集合大小为 \(0\)\(1\) 的情况。

所以答案的 EGF 应为 \(\exp(\exp(x)-x-1)\)

展开:

\[\begin{align*}&e^{e^x-x-1} \\=&e^{-x}e^{e^x-1} \\=&e^{-x}\sum_k\frac 1{k!}(e^x-1)^k \\=&e^{-x}\sum_k\frac 1{k!}\sum_{j=0}^k\binom kje^{jx}(-1)^{k-j} \\=&e^{-x}\sum_k\frac 1{k!}\sum_{j=0}^k\frac{k!}{i!j!}e^{jx}(-1)^i \\=&\sum_{i+j\le n}\frac 1{i!j!}e^{(j-1)x}(-1)^i\end{align*} \]

提出第 \(n\) 项系数:

\[\begin{align*}&[{x^n}/{n!}]e^{e^x-x-1} \\=&\sum_{i+j\le n}\frac 1{i!j!}([{x^n}/{n!}]e^{(j-1)x})(-1)^i \\=&\sum_{i+j\le n}\frac 1{i!j!}(j-1)^n(-1)^i \\=&\sum_{j=0}^n\frac {(j-1)^n}{j!}\sum_{i=0}^{n-j}\frac{(-1)^i}{i!}\end{align*} \]

后半部分是一个与 \(j\) 无关的前缀和。前半部分可以通过线性筛线性求。分别预处理即可。


同样的,我们也可以线性求单项贝尔数,按照类似的方法有:

\[ \begin{align*}&[x^n/n!]e^{e^x-1} \\=&\sum_{i+j\le n}\frac 1{i!j!}[x^n/n!]e^{jx}(-1)^i \\=&\sum_{j=0}^n\frac {j^n}{j!}\sum_{i=0}^{n-j}\frac{(-1)^i}{i!} \end{align*} \]


code
#include <iostream>
#include <algorithm>
#include <bitset>const int N = 1e7 + 7;
typedef long long i64;namespace # {
int n, MOD;i64 fpow(i64 x, i64 k) {i64 res = 1;for(; k; k >>= 1, x = x * x %MOD)if(k & 1) res = res * x %MOD;return res;
}
#define inv(x) fpow((x), MOD-2)std::bitset<N> ip;
std::basic_string<int> pr;
int pown[N];
void prime() {pr.clear();for(int i = 2; i <= n; ++i) {if(!ip[i]) pr += i, pown[i] = fpow(i, n);else ip[i] = 0;for(int& p: pr) {if(i * p > n) break;ip[i * p] = 1;pown[i * p] = 1ll * pown[i] * pown[p] %MOD;if(i % p == 0) break;}}
}inline int getpow(int x) { return x == -1 ? n & 1 ? -1 : 1 : x <= 1 ? x : pown[x]; }
inline int gmod(i64 x) { return x - (x >= MOD) * MOD; }int frac[N], ifac[N], pre[N];
inline void main() {std::cin >> n >> MOD;ifac[0] = frac[0] = 1;for(int i = 1; i <= n; ++i) {frac[i] = 1ll * frac[i-1] * i %MOD;}ifac[n] = inv(frac[n]);for(int i = n; i >= 1; --i) {ifac[i-1] = 1ll * ifac[i] * i %MOD;}pre[0] = 1;for(int i = 1; i <= n; ++i) {if(i & 1) pre[i] = gmod(pre[i-1] + MOD - ifac[i]);else pre[i] = gmod(pre[i-1] + ifac[i]);}prime();int ans = 0;for(int k = 0; k <= n; ++k) {int res = 1ll * ifac[k] * getpow(k-1) %MOD * pre[n-k] %MOD;ans = gmod(ans + res);}std::cout << ans << "\n";
}};int main() {freopen("card.in", "r", stdin), freopen("card.out", "w", stdout);std::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);int t; std::cin >> t;while(t--) #::main();
}
http://www.jsqmd.com/news/32327/

相关文章:

  • 2025年广东商用新风系统品牌推荐,广东中电深度解析
  • docker加速器1Panel
  • AI开发实践:如何通过案例学习快速上手项目开发
  • debian 安装redis ubuntu 安装redis
  • 2025 年 11 月温泉泳池设备,酒店泳池设备,别墅泳池设备厂家最新推荐,技术实力与市场口碑深度解析!
  • 2025年布匹堆垛架订做厂家权威推荐榜单:冷库堆垛架/折叠式堆垛架/抽插堆垛架源头厂家精选
  • CentOS 7 安装条码识别工具 zbar
  • 2025 年 11 月膜结构停车棚,膜结构汽车棚,膜结构推拉棚厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 2025深圳艺考生文化课辅导推荐榜:全日制艺考生文化课培训机构,精准提分机构精选
  • 2025室外/攀爬/绳网/水上/无动力/公园/景区/酒店/幼教/儿童滑梯/户外/淘气堡/小区/木质/游乐设施实力厂家推荐榜:启乐迪领衔,这些品牌凭品质站稳市场
  • 2025年方形橡胶减震器工厂权威推荐榜单:JGF型减震器/JGF型橡胶减震器/ZA型橡胶减震器源头厂家精选
  • 2025 年车床厂家最新推荐榜:聚焦创新实力与市场认可度,精选 优质企业助力企业采购决策双头车床/双头数控车床公司推荐
  • 2025/11/6
  • 豆绿色16进制
  • 详细介绍:用一个 Bash CLI 管理多款 AI 开发工具:jt-code-cli 实战与原理解析
  • 【中南大学主办|高录用快见刊】第七届建筑学研究前沿与生态环境国际研讨会(ARFEE 2025)
  • Redis 基础入门与核心概念【第一部分】
  • 2025年ASMEB16.5法兰定做厂家权威推荐榜单:ASMEB16.5法兰/ASMEB16.47法兰/钢制法兰源头厂家精选
  • logback极简开箱使用 - --
  • 2025 涂料供应厂家最新推荐榜:权威测评榜单发布,家装工程选品指南及品牌优选攻略
  • 2025 年药包材辅导公司最新推荐:GMP 认证 / 洁净厂房设计 / 设备验证优质机构权威盘点及选择指南实验室 3Q4Q / 洁净厂房设计装修 / 洁净厂房 3Q4Q 公司推荐
  • 2025年江苏管教青少年的学校培训权威推荐榜单:江苏少年管教学校/江苏少年管理学校/江苏少年管制学校教育机构精选
  • 图书出版的幕后故事-《JMeter核心技术、性能测试与性能分析》背后不为人知的事
  • 2025年哈尔滨十大有实力的装修装饰专业公司推荐
  • [Python刷题记录]-环形链表二-链表-中等
  • 2025 年最新推荐标识标牌制造厂家榜单:深度解读行业产能、技术实力及权威协会测评优选品牌金属 / 机场标识牌 / 指示标识推荐
  • Chat2DB测试体验
  • 2025 年最新推荐立体画厂家权威榜单:涵盖 3D 光栅立体画 / 立体光栅卡 / 3D 装饰立体画 / 三维立体画,专业测评助力精准选择
  • WSL安装EMBOSS,验证是否能利用needleall工具做多序列全局比对
  • 2025年钢制拍门工厂权威推荐榜单:玻璃钢拍门/防倒灌拍门/浮箱拍门源头厂家精选