Anniversary party poj-2342

    题目大意:没有上司的舞会原题。

    注释:n<=6000,-127<=val<=128.

      想法:其实就是最大点独立集。我们介绍树形dp

        树形dp就是以节点或者及其子树为信息,进行动态规划。用dfs的原理,遍历,在回溯是更新父亲节点。

      然后,关于这道题,我们就可以对于每一个节点进行标记,然后对于满足条件的节点进行遍历。设状态就是两个dp,分别表示选当前根节点和不选当前根节点。更新是瞎jb更新即可... ....

    最后,附上丑陋的代码... ...

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. int father[6005],vis[6005],dp[6005][2],t;
  7. void dfs(int node)
  8. {
  9. vis[node] = 1;
  10. for(int i=1;i<=t;i++)
  11. {
  12. if(!vis[i]&&father[i]==node)
  13. {
  14. dfs(i);
  15. dp[node][1]+=dp[i][0];
  16. dp[node][0]+=max(dp[i][0],dp[i][1]);
  17. }
  18. }
  19. }
  20.  
  21. int main()
  22. {
  23. int l,k,root;
  24. while(~scanf("%d",&t))
  25. {
  26. for(int i=1;i<=t;i++)
  27. scanf("%d",&dp[i][1]);
  28. root=0;
  29. while(scanf("%d%d",&l,&k),l+k>0)
  30. {
  31. father[l]=k;
  32. root=k;
  33. }
  34. memset(vis,0,sizeof(vis));
  35. dfs(root);
  36. printf("%d\n",max(dp[root][1],dp[root][0]));
  37. }
  38.  
  39. return 0;
  40. }

    小结:对于树形dp的路还有很长... ...

[poj2342]Anniversary party_树形dp的更多相关文章

  1. [poj2342]Anniversary party树形dp入门

    题意:选出不含直接上下司关系的最大价值. 解题关键:树形dp入门题,注意怎么找出根节点,运用了并查集的思想. 转移方程:dp[i][1]+=dp[j][0];/i是j的子树 dp[i][0]+=max ...

  2. Anniversary party_树形DP

    Description There is going to be a party to celebrate the 80-th Anniversary of the Ural State Univer ...

  3. poj 2324 Anniversary party(树形DP)

    /*poj 2324 Anniversary party(树形DP) ---用dp[i][1]表示以i为根的子树节点i要去的最大欢乐值,用dp[i][0]表示以i为根节点的子树i不去时的最大欢乐值, ...

  4. POJ 2342 - Anniversary party - [树形DP]

    题目链接:http://poj.org/problem?id=2342 Description There is going to be a party to celebrate the 80-th ...

  5. hdu Anniversary party 树形DP,点带有值。求MAX

    Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  6. POJ 2342 &&HDU 1520 Anniversary party 树形DP 水题

    一个公司的职员是分级制度的,所有员工刚好是一个树形结构,现在公司要举办一个聚会,邀请部分职员来参加. 要求: 1.为了聚会有趣,若邀请了一个职员,则该职员的直接上级(即父节点)和直接下级(即儿子节点) ...

  7. HDU 1520 Anniversary party [树形DP]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题目大意:给出n个带权点,他们的关系可以构成一棵树,问从中选出若干个不相邻的点可能得到的最大值为 ...

  8. hdu_Anniversary party_(树形DP入门题)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:有N个人,N-1个人有自己的上司,每个人有一个快乐值,如果这个人参加了聚会,那么这个人的直 ...

  9. POJ Anniversary party 树形DP

    /* 树形dp: 给一颗树,要求一组节点,节点之间没有父子关系,并且使得所有的节点的权值和最大 对于每一个节点,我们有两种状态 dp[i][0]表示不选择节点i,以节点i为根的子树所能形成的节点集所能 ...

随机推荐

  1. Java中的字符串拼接

    Java中的字符串拼接 1.设计源码 /** * @Title:IndexOf.java * @Package:com.you.freemarker.model * @Description: * @ ...

  2. HighCharts基本折线图

    1.设计源码 <!DOCTYPE html> <!-- To change this license header, choose License Headers in Projec ...

  3. (十二)java嵌套类和内部类

    嵌套类和内部类:在一个类里边定义的类叫做嵌套类,其中没有static修饰的嵌套类是我们通常说的内部类,而被static修饰的嵌套类不常用.有的地方没有嵌套类和内部类的区分,直接是嵌套类就称作内部类,没 ...

  4. Linux查看目录中的文件

    Linux查看目录中的文件 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ls examples.desktop jdk 公共的 视频 文档 音乐 java ...

  5. java.lang.NullPointerException: No FileItemFactory has been set.

    1.错误描述 java.lang.NullPointerException: No FileItemFactory has been set. at org.apache.commons.fileup ...

  6. C++遍历二维数组的四种方法

    #include <iostream> using std::cin; using std::cout; using std::endl; using std::string; using ...

  7. java中outputStream与inputStream的相互转换

    package com.boco.test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; im ...

  8. 【Luogu3444】ORK-Ploughing(贪心)

    [Luogu3444]ORK-Ploughing(贪心) 题面 Luogu 题解 我们知道,如果我们选定了以横向为主,或者纵向为主, 那么就有尽可能减少另一个方向上耕地的次数 所以分开贪心,但是本质相 ...

  9. [SCOI2007]蜥蜴

    网络流 一个点拆成两个,注意要把某一类边连反过来 这样才能保证有限制 # include <bits/stdc++.h> # define IL inline # define RG re ...

  10. eclipse 精确查询

    ---恢复内容开始--- ctrl+H(一般都是这个,如果无效看你的自定义快捷键) 输入\b 查询的字符串 \b   后面的正则表达式选框必须选