浪逼水题狗wyfcyx

博客详细解析了BZOJ1129题目——[POI2008]Per,通过分析数字相对位置计算排列个数。利用树状数组维护前缀和,结合中国剩余定理解决组合数计算难题,思路清晰。
摘要由CSDN通过智能技术生成

在这里记录一下看过的题目的思路,有时间写。
BZOJ1129: [POI2008]Per
从小到大依次考虑每种数字,按照这种数字在当前序列中的相对位置来计算这是第几类,每一类都会有剩下的所有数字的本质不同的排列个数得到。
那么考虑这是第几类,从前向后考虑每个这种数字的位置,假设序列长度为 n ,第一个该数字出现在位置a1,这种数字有 m 个,假设计算在第一个数的位置上更靠前的排列个数,那么就应该是(nm)(na1+1m),我们依此类推再计算在第二个数的位置上更靠前的排列个数之类的即可,可以做到 O(m) 计算。
计算完一类数字之后我们将所有这种数字删除再考虑剩下的数字,我们可以用树状数组维护前缀和来实现维护剩下数字的位置。
于是还剩下的就只有组合数无法轻易计算的问题了。。。
我们只能套用中国剩余定理来解决问题了0。0。
但是思路还蛮清晰的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值