zoukankan      html  css  js  c++  java
  • poj 2342 && hdu 1520 树形dp

    题意:有n个人,接下来n行是n个人的价值,再接下来n行给出l,k说的是l的上司是k,这里注意l与k是不能同时出现的

    链接:点我

    dp[i][1] += dp[j][0],

    dp[i][0] += max{dp[j][0],dp[j][1]};其中j为i的孩子节点。

    第二次做感觉已经很水了

     

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<map>
     8 using namespace std;
     9 #define MOD 1000000007
    10 const int INF=0x3f3f3f3f;
    11 const double eps=1e-5;
    12 typedef long long ll;
    13 #define cl(a) memset(a,0,sizeof(a))
    14 #define ts printf("*****
    ");
    15 const int MAXN=6010;
    16 int n,m,tt;
    17 int aa[MAXN];
    18 int tot,head[MAXN],dp[MAXN][2],in[MAXN];
    19 struct Edge
    20 {
    21     int to,next;
    22 }edge[MAXN];
    23 void addedge(int u,int v)
    24 {
    25     edge[tot].to=v;
    26     edge[tot].next=head[u];
    27     head[u]=tot++;
    28 }
    29 int dfs(int u)
    30 {
    31     for(int i=head[u];i!=-1;i=edge[i].next)
    32     {
    33         int v=edge[i].to;
    34         dfs(v);
    35         dp[u][1]+=dp[v][0];
    36         dp[u][0]+=max(dp[v][0],dp[v][1]);
    37     }
    38     return max(dp[u][0],dp[u][1]);
    39 }
    40 void init()
    41 {
    42     tot=0;
    43     memset(head,-1,sizeof(head));
    44     cl(dp);
    45     cl(in);
    46 }
    47 int main()
    48 {
    49     int i,j,k;
    50     #ifndef ONLINE_JUDGE
    51     freopen("1.in","r",stdin);
    52     #endif
    53     while(scanf("%d",&n)!=EOF)
    54     {
    55         init();
    56         for(i=1;i<=n;i++)
    57            scanf("%d",&dp[i][1]);
    58         int a,b;
    59         while(scanf("%d%d",&a,&b))
    60         {
    61             if(a==0&&b==0)break;
    62             addedge(b,a);
    63             in[a]++;
    64         }
    65         int ans=0;
    66         for(i=1;i<=n;i++)        //题目的意思就一棵树
    67         {
    68             if(!in[i])  ans=dfs(i);
    69         }
    70         printf("%d
    ",ans);
    71     }
    72 }
  • 相关阅读:
    使用Eclipse创建Maven的JSP项目
    MySQL远程访问
    IDEA创建web工程,不用Archetype(超简单)
    IDEA创建web工程(超简单)
    共享软件
    C语言讲义——链表完整代码
    base64图片显示问题
    JAVA 判断一个字符串是否是合法的日期格式?
    SpringBoot配置本地文件映射路径
    SpringBoot读取资源目录下的文件
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4277115.html
Copyright © 2011-2022 走看看