poj 1173 具有重复的组合和容斥原理

本文深入分析了ACM竞赛中关于BC(n,k,m)问题的解法,通过组合数学与容斥原理,揭示了解题背后的数学原理。详细介绍了BC(n,k,m)的定义、计算方法及排序问题的解决策略,并提供了相应的代码实现,旨在帮助参赛者更深入理解并高效解决此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

计算BC(n,k,m),就是X1+X2+...+Xk=n,其中1<=Xi<=m,有多少个解?这些解顺序排列,输入一个排列,计算它是第几个?

详见http://acm.pku.edu.cn/JudgeOnline/problem?id=1173

如BC(7,4,2),有16个解

0: 1000100  |  8: 1100100
1: 1000110  |  9: 1100110
2: 1001000  | 10: 1101000
3: 1001100  | 11: 1101100
4: 1001110  | 12: 1101110
5: 1011000  | 13: 1110010
6: 1011100  | 14: 1110100
7: 1100010  | 15: 1110110

然后输入

7 4 3
5
1001110
1110110
1001100
1001110
1000100
输出
16
4
15
3
4
0
题目分析
IOI的题,做的我好爽呀。很多解题报告用观察的方法,我是通过组合数学分析的,也算是另一个思路吧。而且我相信从数学原理分析问题,
分析的更透彻,对本质把握的更好一些。
首先具有重复的组合数。若从k种物品中选出n个物品,其中每种物品可以原则无限多个,成为具有重复的组合数,
这个组合数等于C(n+k-1,k-1).
这个题等价于简单的数学表达是X1+X2+...+Xk=n,其中Xi>=0,有多少个解.
证明:把n个物品排成一排,用k-1个栏杆对它们进行划分,如下图所示
。。。|。。。|。。。
。||。。。。。。。。
这里n=9,k=3,第一个划分对应3+3+3=9;第二个划分对应1+0+8=9.划分和解是一一对应。
划分有C(n+k-1,k-1)种,所以解有C(n+k-1,k-1)种。
其次,容斥原理。集合A1不具有性质P1,集合A2不具有性质P2,...,那么不具有性质P1和P2...的集合中的元素的个数满足...
原谅我懒得把这个公式打出来,如果你想知道,网上随便就搜出来了。
那么回到本题,X1+X2+...+Xk=n,其中1<=Xi<=m的解的个数怎么计算呢?       (1)
首先用Xi=Yi+1代替上式,得到Y1+Y2+...+Yk=n-k,其中0<=Yi<=m-1.
现在考虑式子Z1+Z2+...+Zk=n-k,其中Z0>=m;Zi>=0 (i!=1)                             (2)
用A1表示解中不具有0<=Z1<=m-1的性质,但是其它解可以任取非负值,那么就是(2)的解。
要解(2)式,用Z1=W1+m代替,则W1可取任意值,这转化为可以求解的问题。
(2)式可以计算了,根据容斥原理就可以解(1)式。
至于排序的问题,观察观察就出来了,详情就看代码吧。
代码
 
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值