zoukankan      html  css  js  c++  java
  • 洛谷 P1352 没有上司的舞会

    P1352 没有上司的舞会

    树形dp

    dp[i][0]表示第i个人没有来的活跃值

    dp[i][1]表示第i个人来了的活跃值

    第i个人来时,他的直接下属就不可以来  所以  如果k是他的直接下属的话  dp[i][1]+=dp[k][0]

    第i个人不来,他的直接下属可以来也可以不来 所以  如果k是他的直接下属的话  dp[i][0]+=max(dp[k][0],dp[k][1])

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define maxn 1000000
     4 int n,m,fa[maxn],root,dp[maxn][2],x,y;
     5 bool vis[maxn];
     6 
     7 void tree_dp(int x)
     8 {
     9     vis[x]=1;
    10     for(int i=1;i<=n;i++)
    11     {
    12         if(!vis[i]&&fa[i]==x)
    13         {
    14             tree_dp(i);
    15             dp[x][1]+=dp[i][0];
    16             dp[x][0]+=max(dp[i][1],dp[i][0]);
    17         }
    18         
    19     }
    20 }
    21 
    22 int main()
    23 {
    24     scanf("%d",&n);
    25     for(int i=1;i<=n;i++) scanf("%d",&dp[i][1]);
    26     for(int i=1;i<n;i++)
    27     {
    28         scanf("%d%d",&x,&y);
    29         fa[x]=y; root=x;
    30     }
    31     scanf("%d%d",&x,&y);
    32     while(fa[root]) root=fa[root];
    33     tree_dp(root);
    34     printf("%d
    ",max(dp[root][0],dp[root][1]));
    35     return 0;
    36 }
    View Code
  • 相关阅读:
    vue axios创建实例
    vue axios全局配置
    vue axios并发请求
    vue axios HTTP 库
    vuex actions异步操作
    vuex getters
    Go并发控制--Channel篇
    UVA10228 A Star not a Tree?
    P1395 会议
    P1337 [JSOI2004]平衡点 / 吊打XXX
  • 原文地址:https://www.cnblogs.com/chen74123/p/7511781.html
Copyright © 2011-2022 走看看