Jzoj5235 好的排列

这篇博客探讨了如何解决一个关于排列的问题,其中涉及动态规划和计数类DP的应用。博主给出了针对q个询问,每个询问包含n和k的情况下,计算有多少种好的排列方法。通过设立状态f[i][j]表示前i个数字中有j个好位置的排列数量,通过分析转移过程,得出不连续的非好位置对排列的影响,从而简化了问题的求解。
摘要由CSDN通过智能技术生成
对于一个1->n的排列 ,定义A中的一个位置i是好的,当且仅当Ai-1>Ai 或者Ai+1>Ai。对于一个排列A,假如有不少于k个位置是好的,那么称A是一个好的排列。

现在有q个询问,每个询问给定n,k,问有多少排列是好的。答案对10^9+7取模。

显然是计数类dp,我们设f[i][j]表示对于一个1->i的排列,好的位置有j个的情况

考虑转移,显然f[i][j]->f[i+1][k]相当于插入一个i+1

那么我们考虑对j的影响,显然f[i][j]只能转移到f[i+1][j]或者f[i][j],因为这取决于你将i+1放在哪个位置上

如果放在一个不是好位置的两边,那么j就会+1,否则j不变,而且显然,不好的位置一定不连续(显然)

那么转移就十分简单了,参考code


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值