codeforces814E. An unavoidable detour for home(dp套dp)

博客探讨了一道图论题目,其中要求构造一张特殊的分层图,确保从首都1号点出发的最短路径是唯一的。题目强调较小编号的点到首都的最短路径不超过较大编号的点,并给出每点的度数限制。解决方案涉及到动态规划(DP)技巧,通过状态转移方程来计算不同层数和节点分布的方案数,最终模10^9+7。博客中还提到了如何预处理状态并进行边界情况讨论。
摘要由CSDN通过智能技术生成

传送门
题意:
有一张图,其中1号点是首都。已知编号更小的点到首都的最短距离一定不会超过编号更大的点。(距离定义为经过的边数) 要求每个点到首都的最短路径唯一。 且图上不存在重边与自环。 给定所有点的度数(2或3),求方案数mod 10^9+7。 n<=50
思路:
看到限制就应该有大概思路:一个合法的图应该是分层的,且每一层中的数编号连续。
于是不难设置状态 f i , j f_{i,j} fi,j表示前 i i i个点最后一层有 j j j个点的方案数。
考虑枚举上一层的节点数 k k k转移: f i , j = f i − j , k ∗ ? ? ? f_{i,j}=f_{i-j,k}*??? fi,j=fij,k???
于是将问题转化成了求 ? ? ? ??? ???
这个 ? ? ? ??? ???可以 d p dp dp出来。
定义状态 g i , j , k g_{i,j,k} gi,j,k表示当前层有 i i i个点,上一层有 j j j个度数为 2 2 2的和 k k k个度数为

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值