HDU 4917 Permutation

该博客探讨了HDU 4917 Permutation问题,涉及到如何处理由特定条件构成的有向无环图(DAG)的拓扑排序计数。当边数较少且可能存在不连通情况时,博主提出使用状态压缩和记忆化搜索的方法。在已知不同连通集合内的拓扑排序种类数时,通过插空的动态规划策略将它们合并。文章最后给出了利用这种策略解决问题的代码实现。
摘要由CSDN通过智能技术生成

题意:

一个序列p1、p2、p3……pn是由1、2、3……n这些数字组成的  现给出一些条件pi<pj  问满足所有条件的排列的个数


思路:

很容易想到用一条有向的线连接所有的pi和pj  那么就构成了有向无环图(题中说有解所以无环)

又因为pi各不相同  那么题目就变成了有向无环图的拓扑排序的种类数

题目中边数较少  所以可能出现不连通情况  我们先讨论一个连通集合内拓扑排序的种类数

题目中m较小  可以利用状压后的记忆化搜索解决

现在考虑如果知道了A和B两个集合各自的种类数  如果把它们合起来

由于各自种类已知  我们可以把A和B当成有序的排列  那么问题就变成了将|B|个元素插空到|A|个元素中间

这个可以利用dp解决  同时n较小  我们可以直接打出表


代码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值