Problem

bzoj权限题,洛谷上可提交

洛谷上的奇葩翻译不要看,很多条件缺漏

题意简述:给定一棵树,每条边权为1,给定所有点点权,每条边仅能走两次,求以一定顺序遍历整棵树后,使所有点中的到达时间加点权的和的最大值最小(到达了就开始安装程序,点权即为安装时间,求最早什么时候所有电脑安装完毕)

Solution

前置技能:树形Dp、贪心

这一类\(n\)在\(1e5\)范围的树上问题,一般都是树状Dp,考虑到题目中每条边仅能走两次,所以一旦到达了一个节点,一定会将以这个节点为根的子树全部遍历完再出子树,所以只用考虑到达一个节点后访问其儿子的先后顺序

考虑到遍历每棵子树的时间是一定的,即至少要花遍历整颗子树的时间,定义富余时间为遍历完某棵子树之后还需等待的时间,即子树下所有程序安装完的时间减去遍历时间,那么有一个贪心策略就是富余时间多的子树优先遍历,因为整棵树的遍历时间一定,所以富余部分多的优先解决

然后就没了,时间\(O(n\log n)\),本地测会爆栈,直接交就好了

Code

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rg register
  4. template <typename _Tp> inline _Tp read(_Tp&x){
  5. char c11=getchar(),ob=0;x=0;
  6. while(c11^'-'&&!isdigit(c11))c11=getchar();if(c11=='-')ob=1,c11=getchar();
  7. while(isdigit(c11))x=x*10+c11-'0',c11=getchar();if(ob)x=-x;return x;
  8. }
  9. const int N=501000;
  10. struct Edge{int v,nxt;}a[N<<1];
  11. int head[N],f[N],g[N],stk[N];
  12. int n,_;
  13. template <typename _Tp> inline _Tp tmax(const _Tp A,const _Tp B){return A>B?A:B;}
  14. inline void add(int u,int v){a[++_].v=v,a[_].nxt=head[u],head[u]=_;return ;}
  15. inline int cmp(const int&A,const int&B){return f[A]-g[A]>f[B]-g[B];}
  16. inline void dfs(int x,int fa){
  17. for(int i=head[x];i;i=a[i].nxt)
  18. if(a[i].v!=fa)
  19. dfs(a[i].v,x);
  20. int top=0;
  21. for(rg int i=head[x];i;i=a[i].nxt)
  22. if(a[i].v!=fa){
  23. g[a[i].v]+=2;
  24. f[a[i].v]=tmax(g[a[i].v],f[a[i].v]+1);
  25. stk[++top]=a[i].v;
  26. }
  27. sort(stk+1,stk+top+1,cmp);
  28. for(rg int i=1;i<=top;++i){
  29. f[x]=tmax(f[x],g[x]+f[stk[i]]);
  30. g[x]+=g[stk[i]];
  31. }return ;
  32. }
  33. int main(){
  34. read(n);
  35. for(rg int i=1;i<=n;++i)read(f[i]);int vas=f[1];
  36. for(rg int i=1,x,y;i<n;++i)read(x),read(y),add(x,y),add(y,x);
  37. dfs(1,0);printf("%d\n",tmax(f[1],g[1]+vas));return 0;
  38. }

题解-POI2014 FAR-FarmCraft的更多相关文章

  1. 题解-POI2014 Supercomputer

    Problem 辣鸡bzoj权限题,洛谷链接 题意概要:一棵 \(n\) 个点有根树.\(Q\) 次询问给出一个 \(K\),回答遍历完整棵树所需最少操作次数.每次操作可以选择访问不超过 \(K\) ...

  2. POI2014题解

    POI2014题解 [BZOJ3521][Poi2014]Salad Bar 把p当作\(1\),把j当作\(-1\),然后做一遍前缀和. 一个合法区间\([l,r]\)要满足条件就需要满足所有前缀和 ...

  3. 【BZOJ3829】[Poi2014]FarmCraft 树形DP(贪心)

    [BZOJ3829][Poi2014]FarmCraft Description In a village called Byteville, there are   houses connected ...

  4. [补档][Poi2014]FarmCraft

    [Poi2014]FarmCraft 题目 mhy住在一棵有n个点的树的1号结点上,每个结点上都有一个妹子. mhy从自己家出发,去给每一个妹子都送一台电脑,每个妹子拿到电脑后就会开始安装zhx牌杀毒 ...

  5. FarmCraft[POI2014]

    题目描述 In a village called Byteville, there are   houses connected with N-1 roads. For each pair of ho ...

  6. [BZOJ 3829][POI2014] FarmCraft

    先贴一波题面... 3829: [Poi2014]FarmCraft Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 421  Solved: 197[ ...

  7. 【bzoj3829】[Poi2014]FarmCraft 贪心

    原文地址:http://www.cnblogs.com/GXZlegend/p/6826667.html 题目描述 In a village called Byteville, there are   ...

  8. BZOJ3829[Poi2014]FarmCraft——树形DP+贪心

    题目描述 In a village called Byteville, there are   houses connected with N-1 roads. For each pair of ho ...

  9. BZOJ3829 [Poi2014]FarmCraft 【树形dp】

    题目链接 BZOJ3829 题解 设\(f[i]\)为从\(i\)父亲进入\(i\)之前开始计时,\(i\)的子树中最晚装好的时间 同时记\(siz[i]\)为节点\(i\)子树大小的两倍,即为从父亲 ...

随机推荐

  1. 【SQL】数据库中的五种约束

    #五大约束 1.主键约束(Primay Key Coustraint) 唯一性,非空性 2.唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个 3.检查约束 (Check ...

  2. 关于Android Studio开发环境变量的设置(avd启动黑屏)

    之前因为乱按网上的设置导致启动avd启动黑屏,查了很久原来是ANDROID_AVD_HOME变量没有加$符号 以下是正确的环境变量配置 添加环境变量(注意avd中有一个$符号) ANDROID_SDK ...

  3. 启用SQL Server 2014 中的OLE 自动化功能

    企业中很多架构都在快走向Service概念,尽量采用平台服务方式提供给各个Application使用.因此,个系统都会去呼叫像是Web Service,WCF或ODATA…等等各种类型的服务.一般来说 ...

  4. while循环、格式化输出、运算符和编码初识

    while循环 1. while循环的结构 while 条件: 执行语句1 执行语句2 i = 0 while i < 10: print(i) i += 1 运行结果 0 1 2 3 4 5 ...

  5. 细说JDK日志组件

    1. 概述 JDK自带的日志组件在包java.util.logging下,如图: 2. 架构如上图所示,JDK日志组件核心元素包括:Logger,Handler,Filter和Formatter,他们 ...

  6. 三.HashMap原理及实现学习总结

    HashMap是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构.本篇主要是从HashMap的工作原理,数据结构分析,HashMap存储和读取几个方面对其进行学习总结.关于Hash ...

  7. VS2019预览版发布了

     VS2019正式版已发布:https://www.cnblogs.com/zhaogaojian/p/10648904.html 1.点击下载https://visualstudio.microso ...

  8. Hadoop2.7.3+Hbase-1.2.6完全分布式安装部署

    因为学习,在网上找了很多hbase搭建的文章,感觉这篇很好,点此 搭建好后,jps查看了后台进程,发现在slave上面没有HRegionServer进程 便查看了 slave上关于HRegionSer ...

  9. Oracle DbHelper

    wind8 系统选择项目时生成目标平台选择为X86 报错 “System.Exception”类型的未经处理的异常在 WindowsFormsApplication1.exe 中发生 其他信息: 尝试 ...

  10. [C++]Knights of a Polygonal Table(骑士的多角桌)

    [程序结果:用例未完全通过,本博文仅为暂存代码之目的] /* B. Knights of a Polygonal Table url:http://codeforces.com/problemset/ ...