UOJ#273. 【清华集训2016】你的生命已如风中残烛(组合数学)

该博客介绍了UOJ#273题目,涉及清华大学集训期间的一道组合数学问题。博主讨论了如何处理所有位置先-1的情况,并分析了m!种排列中合法排列的判断标准。提出将小于0的最小位置移到序列后面以生成新的合法排列,同时指出这种做法可能导致合法序列被重复计数的问题。解决方案是添加一个-1到末尾,使得所有前缀和大于等于0,最后等于-1。通过这种方式,博主揭示了一个合法序列会被多计算m-n次的规律,从而得出最终答案为(m-n+1)/m!。
摘要由CSDN通过智能技术生成

传送门

题解:

首先所有位置先-1,然后考虑 m ! m! m!种排列,如果全部后缀和小等于0(前缀和大等于0)那么是个合法排列,否则不合法。

这个时候有个自然的想法就是把小于0的最小的位置(若有多个则选最靠后的)放到这个排列后面,然后就又对应着一个合法的排列了,不过这样做每个合法排列对应的方案可能不一样。

这时候就有个非常妙的做法,就是在最后面放一个-1,这个时候就变成了所有前缀大等于0,最后等于-1。此时我们会发现如果一个前缀小于0的最小位置放到后面后,对应的序列依然是合法序列,而且这个-1变成了另外一个合法序列中间的-1,也就是说一个合法序列会被多算 m − n m-n mn次(每个-1都被多加的-1对应一次),所以最后的答案是 m ! m − n + 1 \frac{m!}{m-n+1}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值