题解-POI2014 FAR-FarmCraft
Problem
洛谷上的奇葩翻译不要看,很多条件缺漏
题意简述:给定一棵树,每条边权为1,给定所有点点权,每条边仅能走两次,求以一定顺序遍历整棵树后,使所有点中的到达时间加点权的和的最大值最小(到达了就开始安装程序,点权即为安装时间,求最早什么时候所有电脑安装完毕)
Solution
前置技能:树形Dp、贪心
这一类\(n\)在\(1e5\)范围的树上问题,一般都是树状Dp,考虑到题目中每条边仅能走两次,所以一旦到达了一个节点,一定会将以这个节点为根的子树全部遍历完再出子树,所以只用考虑到达一个节点后访问其儿子的先后顺序
考虑到遍历每棵子树的时间是一定的,即至少要花遍历整颗子树的时间,定义富余时间为遍历完某棵子树之后还需等待的时间,即子树下所有程序安装完的时间减去遍历时间,那么有一个贪心策略就是富余时间多的子树优先遍历,因为整棵树的遍历时间一定,所以富余部分多的优先解决
然后就没了,时间\(O(n\log n)\),本地测会爆栈,直接交就好了
Code
#include<bits/stdc++.h>
using namespace std;
#define rg register
template <typename _Tp> inline _Tp read(_Tp&x){
char c11=getchar(),ob=0;x=0;
while(c11^'-'&&!isdigit(c11))c11=getchar();if(c11=='-')ob=1,c11=getchar();
while(isdigit(c11))x=x*10+c11-'0',c11=getchar();if(ob)x=-x;return x;
}
const int N=501000;
struct Edge{int v,nxt;}a[N<<1];
int head[N],f[N],g[N],stk[N];
int n,_;
template <typename _Tp> inline _Tp tmax(const _Tp A,const _Tp B){return A>B?A:B;}
inline void add(int u,int v){a[++_].v=v,a[_].nxt=head[u],head[u]=_;return ;}
inline int cmp(const int&A,const int&B){return f[A]-g[A]>f[B]-g[B];}
inline void dfs(int x,int fa){
for(int i=head[x];i;i=a[i].nxt)
if(a[i].v!=fa)
dfs(a[i].v,x);
int top=0;
for(rg int i=head[x];i;i=a[i].nxt)
if(a[i].v!=fa){
g[a[i].v]+=2;
f[a[i].v]=tmax(g[a[i].v],f[a[i].v]+1);
stk[++top]=a[i].v;
}
sort(stk+1,stk+top+1,cmp);
for(rg int i=1;i<=top;++i){
f[x]=tmax(f[x],g[x]+f[stk[i]]);
g[x]+=g[stk[i]];
}return ;
}
int main(){
read(n);
for(rg int i=1;i<=n;++i)read(f[i]);int vas=f[1];
for(rg int i=1,x,y;i<n;++i)read(x),read(y),add(x,y),add(y,x);
dfs(1,0);printf("%d\n",tmax(f[1],g[1]+vas));return 0;
}
题解-POI2014 FAR-FarmCraft的更多相关文章
- 题解-POI2014 Supercomputer
Problem 辣鸡bzoj权限题,洛谷链接 题意概要:一棵 \(n\) 个点有根树.\(Q\) 次询问给出一个 \(K\),回答遍历完整棵树所需最少操作次数.每次操作可以选择访问不超过 \(K\) ...
- POI2014题解
POI2014题解 [BZOJ3521][Poi2014]Salad Bar 把p当作\(1\),把j当作\(-1\),然后做一遍前缀和. 一个合法区间\([l,r]\)要满足条件就需要满足所有前缀和 ...
- 【BZOJ3829】[Poi2014]FarmCraft 树形DP(贪心)
[BZOJ3829][Poi2014]FarmCraft Description In a village called Byteville, there are houses connected ...
- [补档][Poi2014]FarmCraft
[Poi2014]FarmCraft 题目 mhy住在一棵有n个点的树的1号结点上,每个结点上都有一个妹子. mhy从自己家出发,去给每一个妹子都送一台电脑,每个妹子拿到电脑后就会开始安装zhx牌杀毒 ...
- FarmCraft[POI2014]
题目描述 In a village called Byteville, there are houses connected with N-1 roads. For each pair of ho ...
- [BZOJ 3829][POI2014] FarmCraft
先贴一波题面... 3829: [Poi2014]FarmCraft Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 421 Solved: 197[ ...
- 【bzoj3829】[Poi2014]FarmCraft 贪心
原文地址:http://www.cnblogs.com/GXZlegend/p/6826667.html 题目描述 In a village called Byteville, there are ...
- BZOJ3829[Poi2014]FarmCraft——树形DP+贪心
题目描述 In a village called Byteville, there are houses connected with N-1 roads. For each pair of ho ...
- BZOJ3829 [Poi2014]FarmCraft 【树形dp】
题目链接 BZOJ3829 题解 设\(f[i]\)为从\(i\)父亲进入\(i\)之前开始计时,\(i\)的子树中最晚装好的时间 同时记\(siz[i]\)为节点\(i\)子树大小的两倍,即为从父亲 ...
随机推荐
- 【SQL】数据库中的五种约束
#五大约束 1.主键约束(Primay Key Coustraint) 唯一性,非空性 2.唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个 3.检查约束 (Check ...
- 关于Android Studio开发环境变量的设置(avd启动黑屏)
之前因为乱按网上的设置导致启动avd启动黑屏,查了很久原来是ANDROID_AVD_HOME变量没有加$符号 以下是正确的环境变量配置 添加环境变量(注意avd中有一个$符号) ANDROID_SDK ...
- 启用SQL Server 2014 中的OLE 自动化功能
企业中很多架构都在快走向Service概念,尽量采用平台服务方式提供给各个Application使用.因此,个系统都会去呼叫像是Web Service,WCF或ODATA…等等各种类型的服务.一般来说 ...
- while循环、格式化输出、运算符和编码初识
while循环 1. while循环的结构 while 条件: 执行语句1 执行语句2 i = 0 while i < 10: print(i) i += 1 运行结果 0 1 2 3 4 5 ...
- 细说JDK日志组件
1. 概述 JDK自带的日志组件在包java.util.logging下,如图: 2. 架构如上图所示,JDK日志组件核心元素包括:Logger,Handler,Filter和Formatter,他们 ...
- 三.HashMap原理及实现学习总结
HashMap是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构.本篇主要是从HashMap的工作原理,数据结构分析,HashMap存储和读取几个方面对其进行学习总结.关于Hash ...
- VS2019预览版发布了
VS2019正式版已发布:https://www.cnblogs.com/zhaogaojian/p/10648904.html 1.点击下载https://visualstudio.microso ...
- Hadoop2.7.3+Hbase-1.2.6完全分布式安装部署
因为学习,在网上找了很多hbase搭建的文章,感觉这篇很好,点此 搭建好后,jps查看了后台进程,发现在slave上面没有HRegionServer进程 便查看了 slave上关于HRegionSer ...
- Oracle DbHelper
wind8 系统选择项目时生成目标平台选择为X86 报错 “System.Exception”类型的未经处理的异常在 WindowsFormsApplication1.exe 中发生 其他信息: 尝试 ...
- [C++]Knights of a Polygonal Table(骑士的多角桌)
[程序结果:用例未完全通过,本博文仅为暂存代码之目的] /* B. Knights of a Polygonal Table url:http://codeforces.com/problemset/ ...