zoukankan      html  css  js  c++  java
  • POJ 1463 Strategic game

      好久没有单独开贴写解题报告了,这是昨天队里DIY的一道题。题意是给一颗树,问最少在多少个根节点上放上哨兵能监视整棵树。

    无非就是枚举根节点,选择放还是不放。

    dp[root][0]表示root节点不放哨兵,则root->v上都要放上哨兵。dp[root][0] = sum(dp[root->v][1]);

    dp[root][1]表示root节点放哨兵,则root->v节点上取放或者不放的最小值,dp[root][1] = sum(min(dp[root->v][0], dp[root->v][1]));

    ps:当时纠结在无向图上了,找不到根节点,所以也就没敢继续想。其实只需要建有向图就可以,转移方程里边已经把无向边这种情况包括了。找如度为0的点作为整棵数的root节点,然后记忆华搜索。。。确实是一道很水的树形dp,还没搞出来,被队长鄙视了。。。被大家鄙视了。。。T_T。看来dp之流确实有经验之谈,多积累吧。。。

  • 相关阅读:
    关于C++类中的静态数据成员
    关于C++中char,sizeof,strlen,string
    C++学习笔记(7)
    C++学习笔记(6)
    C++学习笔记(指针)
    C++学习笔记(4)
    UVA 10780
    UVA 531
    HDU, 3579 Hello Kiki
    UVA, 10413 Crazy Savages
  • 原文地址:https://www.cnblogs.com/vongang/p/2464711.html
Copyright © 2011-2022 走看看