Bzoj 1131[POI2008]STA-Station (树形DP)

状态:

设\(f[i]\)为以\(i\)为根的深度之和,然后考虑从他父亲转移.

发现儿子的深度及其自己的深度\(-1\)

其余的\(+1\),记录一下\(size\)就ok了

转移:

\(f[i] = f[fa] + n - 2 * size[i]\)

记忆化搜索即可.

Bzoj 可能过不了,原因貌似是栈空间不足,可以去洛谷提交,我这里的解决方法是.记忆化搜索的时候用\(n\)作为开头.然后就过了.

  1. #include <iostream>
  2. #include <cstdio>
  3. #define ll long long
  4. const int maxN = 1000000 + 7;
  5. ll f[maxN],n; // f[i] = f[fa] + n - 2 * size[i];
  6. int size[maxN],dep[maxN],fa[maxN];
  7. struct Node {
  8. int v,nex;
  9. }Map[maxN << 1];
  10. int head[maxN],num;
  11. inline int read() {
  12. int x = 0,f = 1;char c = getchar();
  13. while(c < '0' || c > '9') {if(c == '-')f = -1;c = getchar();}
  14. while(c >= '0' && c <= '9') {x = x * 10 + c - '0';c = getchar();}
  15. return x * f;
  16. }
  17. inline ll max(ll a,ll b) {return a > b ? a : b;}
  18. void add_Node(int u,int v) {
  19. Map[++ num] = (Node) {v,head[u]};
  20. head[u] = num;
  21. return ;
  22. }
  23. void work_fst(int now) {
  24. size[now] = 1;dep[now] = dep[fa[now]] + 1;
  25. for(int i = head[now];i;i = Map[i].nex) {
  26. int v = Map[i].v;
  27. if(v != fa[now]) {
  28. fa[v] = now;
  29. work_fst(v);
  30. size[now] += size[v];
  31. }
  32. }
  33. return ;
  34. }
  35. void work_dp(int now) {
  36. for(int i = head[now];i;i = Map[i].nex) {
  37. int v = Map[i].v;
  38. if(v != fa[now]) {
  39. f[v] = f[now] + n - 2 * size[v];
  40. work_dp(v);
  41. }
  42. }
  43. }
  44. int main() {
  45. n = read();
  46. for(int i = 1,u,v;i < n;++ i) {
  47. u = read();v = read();
  48. add_Node(u,v);
  49. add_Node(v,u);
  50. }
  51. dep[0] = -1;
  52. work_fst(n);
  53. for(int i = 1;i <= n;++ i)
  54. f[n] += dep[i];
  55. work_dp(n);
  56. ll ans = 0;
  57. for(int i = 1;i <= n;++ i)
  58. ans = max(ans,f[i]);
  59. for(int i = 1;i <= n;++ i)
  60. if(f[i] == ans) {printf("%d\n", i);break;}
  61. return 0;
  62. }

Bzoj 1131[POI2008]STA-Station (树形DP)的更多相关文章

  1. BZOJ 1131 [POI2008]Sta(树形DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1131 [题目大意] 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度 ...

  2. BZOJ 1131: [POI2008]Sta( dfs )

    对于一棵树, 考虑root的答案向它的孩子转移, 应该是 ans[son] = (ans[root] - size[son]) + (n - size[son]). so , 先 dfs 预处理一下, ...

  3. bzoj 1131 [POI2008]Sta 树形dp 转移根模板题

    [POI2008]Sta Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1889  Solved: 729[Submit][Status][Discu ...

  4. [POI2008]Sta(树形dp)

    [POI2008]Sta Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N<=1000000 下面 ...

  5. BZOJ 1131: [POI2008]Sta

    Description 一棵树,问以那个节点为根时根的总和最大. Sol DFS+树形DP. 第一遍统计一下 size 和 d. 第二遍转移根,统计答案就行了. Code /************* ...

  6. BZOJ1131 POI2008 Sta 【树形DP】

    BZOJ1131 POI2008 Sta Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N<=10 ...

  7. 1131: [POI2008]Sta

    1131: [POI2008]Sta Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 783  Solved: 235[Submit][Status] ...

  8. [BZOJ 4033] [HAOI2015] T1 【树形DP】

    题目链接:BZOJ - 4033 题目分析 使用树形DP,用 f[i][j] 表示在以 i 为根的子树,有 j 个黑点的最大权值. 这个权值指的是,这个子树内部的点对间距离的贡献,以及 i 和 Fat ...

  9. [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)

    [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...

随机推荐

  1. 黑马旅游网 ajax+html在前端实现页标签个数控制

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 牛客假日团队赛2 A.买一送一

    链接: https://ac.nowcoder.com/acm/contest/924/A 题意: Farmer John在网上买干草.他发现了一笔特殊的买卖.他每买一捆大小为A(1 <= A ...

  3. 收藏 SpringBoot :thymeleaf 使用详解

    转载大神们笔记 --比较详细的 http://www.importnew.com/25826.html http://www.niugebbs.com/xdmrhf/1046839.html http ...

  4. 讲明白combineByKey()算子,不是谈源码

    简单介绍 combineByKey()是最通用的对key-value型rdd进行聚集操作的聚集函数(aggregation function).类似于aggregate(),combineByKey( ...

  5. springmvc httprequest 使用@Autowired注解

    springmvc httprequest 使用@Autowired注解我一直有个疑问,就是注解后每次的httprequest 是不是都一样的了,然后会不会引发多线程问题? 代码如下: import ...

  6. kindeditor 修改上传图片的路径的方法

    默认情况下kindeditor上传的图片在编辑器的根目录/attached/目录下.以日期建一个目录,然后保存文件.有些时候大概我们并不想这样.考虑到更新编辑器,或更换编辑器不太方便.比如我现在想把上 ...

  7. 走进docker的世界之入门篇

    by zhouzhipeng from https://blog.zhouzhipeng.com/walk-in-docker-beginning.html本文可全文转载,但需要保留原作者和出处. 什 ...

  8. Nuxt使用记录

    代码及插件需要根据环境引入 (服务端没有window,document,浏览器端没有global) const myPlugins = { install(Vue, options) { Vue.pr ...

  9. 重写FileUpload控件让它可以显示上传后的文件名

    我在以前的开发中经常遇到这样的场景:文件上传之后需要显示文件名,但是asp.net自带的fileupload是不能付给上传后的文件名值的. 以前都是做一个label显示的,今天想起来了,写个控件封装一 ...

  10. 第十六章 提升用户体验 之 设计实现routes

    1. 概述 ASP.NET MVC route 用来把URL映射到方法中的action,是用户和程序之间的桥梁. 本章内容包括:定义route处理URL Pattern.应用route限制.忽略URL ...