洛谷 P4815 狼人游戏 题解

该博客介绍了洛谷P4815题目的解决方案,涉及狼人游戏的逻辑。通过将机器人视为节点,关系视为边,构建无环森林图。文章详细阐述了状态转移方程,并讨论了如何处理树形DP转移,最终计算出符合条件的方案数。
摘要由CSDN通过智能技术生成

洛谷 P4815 [CCO2014] 狼人游戏
在这里插入图片描述
首先题目中有 3 3 3 个限制:

  • 没有机器人又被指控又被保护;
  • 没有机器人被指控或保护一次以上;
  • 如果有一个编号为 A A A 机器人指控或保护编号为 B B B 的机器人,那么我们保证 A < B A<B A<B

那么我们把每一个机器人看成一个节点,每一个关系看成一条对应的边,由指控或保护者指向被指控或被保护者,那么结合前两个限制,容易发现,每一个点的入度只能为 0 0 0 或者 1 1 1,第三个限制保证了整个图没有环。那么整张图就变成了一个森林。

f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k] 表示以 i i i 为根的子树,有 j j j 个狼人的方案数,其中 k = 0 k=0 k=0 表示节点 i i i 不是狼人, k = 1 k=1 k=1 表示节点 i i i 是狼人。那么一共只有 6 6 6 种对应的父子关系。

指控:

  • 狼人父亲指控市民儿子
  • 市民父亲指控市民儿子
  • 市民父亲指控狼人儿子

保护:

  • 狼人父亲保护狼人儿子
  • 市民父亲保护市民儿子
  • 市民父亲保护狼人儿子

这样的话我们可以列出转移方程,设 u u u 为父亲, v v v 为儿子。

当这条边是指控边时:
f [ u ] [ j ] [ 1 ] = f [ u ] [ j − k ] [ 1 ] × f [ v ] [ k ] [ 0 ] f[u][j][1] = f[u][j-k][1] \times f[v][k][0] f[u][j][1]=f[u][jk][1]×f[v]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值