传送门

思路:

  任意找一个点为树根。DFS 遍历树,如果子树和为负就直接跳过,不然就统计进答案。( 虽是任意取一点为根,但不一定从这个点出发能够取得最优解,要开一个 ans 记录一下最大值。)

标程:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<string>
  7. #include<cstdlib>
  8. #include<stack>
  9. #include<vector>
  10. #include<queue>
  11. #include<deque>
  12. #include<map>
  13. #include<set>
  14. using namespace std;
  15. #define lck_max(a,b) ((a)>(b)?(a):(b))
  16. #define lck_min(a,b) ((a)<(b)?(a):(b))
  17. #define maxn 16002
  18. typedef long long LL;
  19. LL sum[maxn],n;
  20. LL head[maxn<<],cnt=;
  21. vector<LL>son[maxn];
  22. LL w[maxn],ans=-maxn;
  23. struct hh
  24. {
  25. LL nex,to;
  26. }t[maxn<<];
  27. inline LL read()
  28. {
  29. LL kr=,xs=;
  30. char ls;
  31. ls=getchar();
  32. while(!isdigit(ls))
  33. {
  34. if(!(ls^))
  35. kr=-;
  36. ls=getchar();
  37. }
  38. while(isdigit(ls))
  39. {
  40. xs=(xs<<)+(xs<<)+(ls^);
  41. ls=getchar();
  42. }
  43. return xs*kr;
  44. }
  45. LL u,v;
  46. inline void add(LL nex,LL to)
  47. {
  48. t[++cnt].nex=head[nex];
  49. t[cnt].to=to;
  50. head[nex]=cnt;
  51. }
  52. inline void dfs(LL u,LL fa)
  53. {
  54. for(LL i=head[u];i;i=t[i].nex)
  55. {
  56. LL v=t[i].to;
  57. if(v==fa) continue;
  58. son[u].push_back(v);
  59. dfs(v,u);
  60. }
  61. if(son[u].size())
  62. {
  63. for(LL j=;j<son[u].size();j++)
  64. {
  65. if(w[son[u][j]]<) continue;
  66. w[u]+=w[son[u][j]];
  67. }
  68. }
  69. w[u]+=sum[u];
  70. ans=lck_max(ans,w[u]);
  71. return ;
  72. }
  73. int main()
  74. {
  75. //freopen("t.in","r",stdin);
  76. n=read();
  77. for(LL i=;i<=n;i++)
  78. sum[i]=read();
  79. for(LL i=;i<n;i++)
  80. {
  81. u=read();v=read();add(u,v);add(v,u);
  82. }
  83. dfs(,);
  84. printf("%lld\n",ans);
  85. return ;
  86. }

P1122 最大子树和的更多相关文章

  1. P1122 最大子树和(树形dp)

    P1122 最大子树和 大水题 随便找一个点做根,蓝后累计子树和. 子树和<0的话不取就行了 顺便找个最大值输出 end. #include<iostream> #include&l ...

  2. 洛谷P1122 最大子树和

    P1122 最大子树和 题目提供者该用户不存在 标签动态规划树形结构 难度普及/提高- 通过/提交54/100 提交该题 讨论 题解 记录 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在 ...

  3. 洛谷 P1122 最大子树和

    P1122 最大子树和 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的 ...

  4. 洛谷——P1122 最大子树和

    P1122 最大子树和 树形DP,$f[u]$表示以u为根的子树的最大美丽指数 $f[u]+=max(0,f[v])$ 树形DP的基本结构,先搜再DP,这题感觉有点儿贪心的性质,选就要选美丽值> ...

  5. [Luogu P1122]最大子树和 (简单树形DP)

    题面 传送门:https://www.luogu.org/problemnew/show/P1122 Solution 这是一道简单的树形DP题. 首先,我们可以转换一下题面,可以发现,题目要求我们求 ...

  6. 【Luogu】P1122最大子树和(DFS,树上DP)

    题目链接 感觉自己DP好烂啊   道道看题解 钦定1为根,DFS搜索子树权值.如果子树权值大于0就将当前节点加上子树权值,反之就把子树扔掉.最后在所有节点的权值中寻找最优解. void dfs(int ...

  7. P1122 最大子树和 (树形DP)

    题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...

  8. 洛谷—— P1122 最大子树和

    https://www.luogu.org/problem/show?pid=1122 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课 ...

  9. 洛谷P1122 最大子树和 (树状dp)

    题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...

随机推荐

  1. mui 卡片视图 遮罩蒙版

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  2. online ddl与pt-osc详解

    Ⅰ.背景 优化sql的过程中发现表上少一个索引,直接加一个?会不会hang住?不加?sql又跑不好,由此引出一个问题--ddl操作怎么做? Ⅱ.闲扯三两句 5.6版本之前的MySQL创建索引不支持on ...

  3. 分析Hello2代码

    代码如下String username = request.getParameter("username"); if (username != null && us ...

  4. 如何使用Windows防火墙禁止软件联网

    很多软件需要联网,当我们为了“某些目的”,不想让软件联网的时候,我们有没有办法做到呢?答案是肯定的,那就是使用Windows系统自带的防火墙来屏蔽软件的联网,禁止软件出站请求,这样就可以了,下面介绍具 ...

  5. CSS弹性盒布局(display:flex)

    CSS弹性布局(display:flex) 参考: http://www.runoob.com/w3cnote/flex-grammar.html https://www.jianshu.com/p/ ...

  6. SQLAlchemy(包含有Flask-Migrate知识点)

    what's the SQLAlchemy SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQ ...

  7. python基础(5)-文件操作

    文件(file)操作 创建文件 verse.txt: 床前明月光 疑是地上霜 open(path(文件路径),mode(模式:r/r+[读],w/w+[写],a/a+[追加])):返回文件句柄(对象) ...

  8. [py]js前端求和与flask后端求和

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  9. 去掉Tomcat的管理页面

    一.去掉Tomcat的管理页面 一.方法一:如果要去掉默认该界面,可以重命名tomcat目录下的ROOT,并新建空文件夹命名为ROOT 1.刚打开tomcat,默认访问的是tomcat管理页面,比如X ...

  10. 理解Deadlock

    问:为啥以下代码会产生死锁 public class Deadlock { static class Friend { private final String name; public Friend ...