zoukankan      html  css  js  c++  java
  • UVa 1407 树形背包 Caves

    这道题可以和POJ 2486 树形背包DP Apple Tree比较着来做。

    参考题解

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <vector>
     6 using namespace std;
     7 
     8 const int maxn = 500 + 10;
     9 
    10 int n, Q;
    11 vector<int> G[maxn], C[maxn];
    12 
    13 int d[maxn][maxn][2], cnt[maxn];
    14 
    15 void dfs(int u)
    16 {
    17     cnt[u] = 1;
    18     d[u][1][0] = d[u][1][1] = 0;
    19     for(int i = 0; i < G[u].size(); i++)
    20     {
    21         int v = G[u][i];
    22         int w = C[u][i];
    23         dfs(v);
    24         cnt[u] += cnt[v];
    25 
    26         for(int j = cnt[u]; j >= 2; j--)
    27             for(int x = 0; x <= j && x <= cnt[v]; x++)
    28             {
    29                 d[u][j][0] = min(d[u][j][0], d[v][x][0] + d[u][j-x][0] + w * 2);
    30                 d[u][j][1] = min(d[u][j][1], d[v][x][0] + d[u][j-x][1] + w * 2);
    31                 d[u][j][1] = min(d[u][j][1], d[v][x][1] + d[u][j-x][0] + w);
    32             }
    33     }
    34 }
    35 
    36 int main()
    37 {
    38     int kase = 1;
    39     while(scanf("%d", &n) == 1 && n)
    40     {
    41         for(int i = 0; i < n; i++) { G[i].clear(); C[i].clear(); }
    42         for(int i = 1; i < n; i++)
    43         {
    44             int a, b, d; scanf("%d%d%d", &a, &b, &d);
    45             G[b].push_back(a); C[b].push_back(d);
    46         }
    47 
    48         memset(d, 0x3f, sizeof(d));
    49         dfs(0);
    50 
    51         printf("Case %d:
    ", kase++);
    52         scanf("%d", &Q);
    53         while(Q--)
    54         {
    55             int x; scanf("%d", &x);
    56             int ans;
    57             for(ans = n; ans > 0; ans--) if(d[0][ans][1] <= x) break;
    58             printf("%d
    ", ans);
    59         }
    60     }
    61 
    62     return 0;
    63 }
    代码君
  • 相关阅读:
    css 弹出框
    net stop 出现1060错误
    a href=#与 a href=javascript:void(0) 的区别
    ubuntu如何安装Mac主题
    js arguments.callee & caller的用法及区别
    js函数——setinterval和setTimeout
    highcharts简介
    highcharts柱状图和饼图的数据填充
    jqgrid的外观重绘
    laravel定时任务
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4701127.html
Copyright © 2011-2022 走看看