Protecting Zonk UVA - 12093 (树dp)

题目链接:点击打开链接

题目思路:这道题真的明知道是到dp,但是定义状态也难,转移也难,决策也难,太菜。这道题网上有一个用标准树dp写的写法,但是我觉得太巧妙,比较难想,所以不打算采用那种写法。对于这道题来说最难处理就是b的那个装置,如果是只有a的话,无疑就是一道非常傻逼的题,但是多了b这个条件,有点难处理,那么这道题的切入点在哪呢,我们可以分析到,对于某一个节点来说如果它与它的父节点的某一条边如果是没有给覆盖到的,那么它的最少1个子节点肯定是要选b的,那么我们根据这个就知道一点方向,

那么总体思路有可以根据之前分析的得到,对于某一个点都有3种选择,根据这个当然是不够的,我们需要一点限制条件,就是刚才分析出来的,如果当前边没有给覆盖那么肯定至少选一个b,所以我们抽象出的状态中,容易知道有当前是哪一个点,当前点选了什么,以及跟父节点的边的覆盖情况,当必须子节点选一个b时,我们容易知道子节点与当前节点边的覆盖情况都是1,当不用非得选择一个b时,我们下一个连边的状态还与当前节点和父节点的状态有关,所以父节点的选择也要加入到状态中。

ac代码:

#include<iostream>
#include<cmath>
#include<queue>
#include<cstdio>
#include<queu
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值