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

P5825 排列计数 题解 / 二项式反演 容斥

题目传送门:P5825 排列计数。

考虑二项式反演,考虑计算钦定了 \(i\) 个上升位的答案,那么相当于分成了 \(n-k\) 个组,每组的元素均单调递增,相当于把 \(1\)\(n\) 放入 \(n-k\) 个集合且可以集合为空的方案数。

设有 \(i\) 个集合的答案为 \(f_i\) 那么考虑对空集合个数容斥,假设我们钦定了 \(j\) 个空集,那么剩下的方案数显然为 \((i-j)^n\),那么 \(f_i = \sum_{j=0}^i (-1)^j {i\choose j} (i-j)^n\)

最后答案直接二项式反演即可。

直接做是 \(O(n^2)\) 的,但我不会 poly /ll。

#include<bits/stdc++.h>
#define double long double
using namespace std;
const int N=1010+10,mod=998244353; 
inline int read(){char c=getchar();int f=1,ans=0;while(c<48||c>57) f=(c==45?f=-1:1),c=getchar();while(c>=48&&c<=57) ans=(ans<<1)+(ans<<3)+(c^48),c=getchar();return ans*f;
}
int n,c[N][N],f[N];
inline void add(int &x,int y){x=(x+y)%mod;}
inline int qpow(int a,int b){int s=1;while(b) ((b&1)?s=1ll*s*a%mod:1),a=1ll*a*a%mod,b>>=1;return s;}
main(){n=read();c[0][0]=1;for (int i=1;i<=n;i++){c[i][0]=1;for (int j=1;j<=n;j++) c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;}for (int i=1;i<=n;i++) for (int j=0;j<=i;j++)if (j&1) add(f[i],mod-1ll*qpow(i-j,n)*c[i][j]%mod);else add(f[i],1ll*qpow(i-j,n)*c[i][j]%mod);for (int i=0;i<=n;i++){int ans=0;for (int j=i;j<=n;j++){int tmp=1ll*c[j][i]*f[n-j]%mod;if ((j-i)&1) add(ans,mod-tmp);else add(ans,tmp);}printf("%lld ",ans);}return 0;
}
http://www.jsqmd.com/news/314240/

相关文章:

  • 基于深度学习YOLOv10的固体废物识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • 梦断代码阅读笔记1
  • 构建跨端驾照学习助手:Flutter × OpenHarmony 的用户信息与驾照状态卡片实现
  • memset 函数用于将一块内存区域中的每个字节设置为特定的值
  • 从进度可视化出发:基于 Flutter × OpenHarmony 的驾照学习助手实践
  • 试玩5款台球小游戏,最上头的居然是这款
  • [特殊字符] Go语言从入门到实践(一):为什么Go能让程序员“少加班“?
  • 数据跨境、隐私泄露、审计溯源——出海企业三大安全必答题
  • 大数据ODS、DWD、DWS、ADS 分层
  • 力扣热题100 20. 有效的括号
  • 2025.12.13 总结 - # P1638 逛画展
  • 2025.12.13 总结 - # P2920 [USACO08NOV] Time Management S
  • 介绍高驰二手运动手表回收价格,全国上门回收
  • 单例模式 枚举
  • 2025.12.13 总结 - # P2909 [USACO08OPEN] Cow Cars S
  • 手把手教你把恒小花分期商城额度提出来变现
  • Node.js 创建第一个应用
  • CSS 简介
  • 【软件研发核心工程实践】发布部署策略与性能测试关键技术详解
  • 民警检测数据集2105张VOC+YOLO格式
  • 【Java开发】办公通讯软件端到端消息分发与提示技术深度解析
  • Notes/Domino 2026 EA2来了!
  • ECharts 数据的视觉映射
  • 财务应收账款统计乱?IPA自动汇总客户欠款,催款有目标
  • 基于深度学习YOLOv12的设备泄漏检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • 手动处理CSV转Excel?Python批量转格式,不用逐个开文件
  • 基于深度学习YOLOv11的红细胞、白细胞和血小板检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • 基于深度学习YOLOv12的3D打印缺陷识别检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • 基于深度学习YOLOv11的3D打印缺陷识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • 基于深度学习YOLOv12的条形码检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)