zoukankan      html  css  js  c++  java
  • 17.没有上司的舞会 树形DP

     

    拖欠很久的树形DP问题终于补上了

    在树上做DP,图论 + 数据结构 + DP了解一下

    样例画成图就是这样,最多是5

     

     一共有2 * n个状态,每个状态需要枚举这个点的所有儿子

    时间复杂度近似O(n)

    树是特殊的图,然后用邻接表存

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 6010;
     4 int n;
     5 int h[N], e[N], ne[N], idx;
     6 int happy[N];
     7 int f[N][2];
     8 bool has_fa[N];
     9 void add(int a, int b) {
    10     e[idx] = b;
    11     ne[idx] = h[a];
    12     h[a] = idx++;
    13 }
    14 void dfs(int u) {
    15     f[u][1] = happy[u];
    16     for (int i = h[u]; ~i; i = ne[i]) {
    17         int j = e[i];
    18         dfs(j);
    19         f[u][1] += f[j][0];
    20         f[u][0] += max(f[j][0], f[j][1]);
    21     }
    22 }
    23 int main() {
    24     cin >> n;
    25     for (int i = 1; i <= n; i++) {
    26         cin >> happy[i];
    27     }
    28     memset(h, -1, sizeof h);
    29     for (int i = 0; i < n - 1; i++) {
    30         int a, b;
    31         cin >> a >> b;
    32         add(b, a);
    33         has_fa[a] = true;
    34     }
    35     int root = 1;
    36     while (has_fa[root]) {
    37         root++;
    38     }
    39     dfs(root);
    40     cout << max(f[root][0], f[root][1]) << endl;
    41     return 0;
    42 }
  • 相关阅读:
    magento模板中XML与phtml关系 [四]
    magento 好好玩
    凹凸曼的修改zencart 程序(经典!)
    首页商品图片显示错位,easy-popular批量上传
    1.7-BGP①
    1.6-路由的控制③
    1.6-路由的控制②
    1.6-路由的控制①
    1.5
    1.4-动态路由协议OSPF⑧
  • 原文地址:https://www.cnblogs.com/fx1998/p/13247089.html
Copyright © 2011-2022 走看看