博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
组合数学
阅读量:3951 次
发布时间:2019-05-24

本文共 1127 字,大约阅读时间需要 3 分钟。

容斥原理

f ( S ) = ∑ T ⊆ S g ( T ) g ( S ) = ∑ T ⊆ S ( − 1 ) ∣ S ∣ − ∣ T ∣ f ( T ) f(S)=\sum_{T \subseteq S} g(T) \\ g(S)=\sum_{T \subseteq S}(-1)^{|S|-|T|} f(T) f(S)=TSg(T)g(S)=TS(1)STf(T)

母函数求组合数

题目

直接把不同字母的多项式相乘就行,模板题
如只有2个a,3个c,1个g
( x 0 + x 1 + x 2 ) ( x 0 + x 3 + x 6 + x 9 ) ( x 7 ) (x^0+x^1+x^2)(x^0+x^3+x^6+x^9)(x^7) (x0+x1+x2)(x0+x3+x6+x9)(x7)

#include
using namespace std;typedef long long ll;int num[30]; // 每个字母的数量ll sup[55];ll tmp[55];int main(){
int T; cin>>T; while(T--){
for(int i=1;i<=26;++i){
cin>>num[i]; if(num[i]*i>50)num[i]=50/i; } memset(tmp,0,sizeof(tmp)); memset(sup,0,sizeof(sup)); sup[0] = 1; for(int i=1;i<=26;++i){
for(int j=0;j<=num[i];++j){
for(int k=0;j*i+k<=50;++k){
tmp[j*i+k] += sup[k]; } } for(int j=0;j<=50;++j){
sup[j] = tmp[j]; tmp[j] = 0; } } ll ans = 0; for(int i=1;i<=50;++i) ans += sup[i]; cout<
<

转载地址:http://tgkzi.baihongyu.com/

你可能感兴趣的文章
浅析busybox查找命令和调用相应命令函数的实现流程框架
查看>>
利用linux dd和tr命令生成特定的数据
查看>>
Fundamentals of battery fuel-gauging
查看>>
armlinux内核启动--内存初始化管理
查看>>
rk3188--4.android用initrd文件系统启动流程
查看>>
rk3188--3.initramfs_data.cpio的生成及使用
查看>>
小议基于Android平台的流媒体播放器的设计 转载
查看>>
linux 2.6 输入子系统 键盘驱动的实现
查看>>
Linux Input Device
查看>>
学习ARM+Linux的很好的资料
查看>>
linux spi子系统 驱动分析续
查看>>
linux设备模型深探
查看>>
SPI设备的驱动
查看>>
Linux 2.6下SPI设备模型--------基于AT91RM9200分析
查看>>
struct device 结构
查看>>
S3C2440上触摸屏驱动实例开发讲解
查看>>
一个基于linux2.6内核下S3C2410触摸屏驱动
查看>>
Linux 内核/sys 文件系统介绍
查看>>
AMBA、AHB、APB总线简介
查看>>
开关功率mos管介绍
查看>>