BZOJ3573:[HNOI2014]米特运输(树形DP)
Description
Input
Output
输出文件仅包含一行,一个整数,表示最少的被重建(即修改储存器容量)的米特储存器的数目。
Sample Input
5
4
3
2
1
1 2
1 3
2 4
2 5
Sample Output
【样例解释】
一个最优解是将A[1]改成8,A[3]改成4,A[5]改成2。
这样,2和3运给1的量相等,4和5运给2的量相等,且每天晚上六点的时候,1,2满,3,4,5空,满足所有限制条件。
Solution
Code
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define N (500009)
using namespace std; struct Edge{int to,next;}edge[N<<];
int n,u,v,cnt,ans=,Ind[N],a[N];
int head[N],num_edge;
double f[N]; void add(int u,int v)
{
edge[++num_edge].to=v;
edge[num_edge].next=head[u];
head[u]=num_edge;
} void Dfs(int x,int fa)
{
for (int i=head[x]; i; i=edge[i].next)
if (edge[i].to!=fa)
f[edge[i].to]=f[x]+log(1.0*Ind[x]), Dfs(edge[i].to,x);
} int main()
{
scanf("%d",&n);
for (int i=; i<=n; ++i)
scanf("%d",&a[i]);
for (int i=; i<=n-; ++i)
{
scanf("%d%d",&u,&v);
add(u,v); add(v,u); ++Ind[u]; ++Ind[v];
}
for (int i=; i<=n; ++i) --Ind[i];
Dfs(,);
for (int i=; i<=n; ++i) f[i]+=log(1.0*a[i]); sort(f+,f+n+);
for (int i=; i<=n; ++i)
if (f[i]-f[i-]>1e-) cnt=;
else ++cnt,ans=max(ans,cnt);
printf("%d\n",n-ans);
}
BZOJ3573:[HNOI2014]米特运输(树形DP)的更多相关文章
- 【BZOJ-3573】米特运输       树形DP
		
3573: [Hnoi2014]米特运输 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1023 Solved: 604[Submit][Statu ...
 - 【bzoj3573】[HNOI2014]米特运输 树形dp
		
题目描述 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城 ...
 - [luogu3237 HNOI2014] 米特运输 (树形dp)
		
传送门 Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N, ...
 - LG3237 「HNOI2014」米特运输  树形DP
		
问题描述 LG3237 题解 问题转化为: 要求将这棵树,满足 结点 \(x\) 所有孩子权值相等 结点 \(x\) 权值等于所有孩子权值和 将乘法转化为 \(\log\) 加法 \(\mathrm{ ...
 - BZOJ3573: [Hnoi2014]米特运输(树上乱搞)
		
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1669 Solved: 1031[Submit][Status][Discuss] Descript ...
 - BZOJ3573 HNOI2014米特运输
		
显然确定一个点的权值后整棵树权值确定.只要算出根节点的权值就能知道两种改法是否等价. 乘的话显然会炸,取log即可.map似乎会出一些问题,sort即可. #include<iostream&g ...
 - BZOJ3573 [Hnoi2014]米特运输  【贪心】
		
题目链接 BZOJ3573 题解 题目又臭又长系列 题意:修改尽量少的点权,使得: ①同个节点的所有儿子点权相同 ②任意非叶节点权值等于其儿子权值之和 容易发现一旦任意一个点权值确定,整棵树权值就确定 ...
 - bzoj3573[Hnoi2014]米特运输
		
http://www.lydsy.com/JudgeOnline/problem.php?id=3573 好吧,虽然这是day1最后一题,但却是最水的一题....(前提:看懂题目) 仔细看题! 仔细看 ...
 - BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash
		
BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash 题意: 给你一棵树每个点有一个权值,要求修改最少的权值,使得每个节点的权值等于其儿子的权值和且儿子的权值都相等. 分析: 首先我们 ...
 
随机推荐
- 搭建jdk环境
			
jdk(java develop toolkit)主要包括:编译程序的javac,运行程序的java,javaAPI类库. 主要步骤: 下载jdk安装包 设置环境变量(JAVA_HOME,Path,C ...
 - NodeJS,MongoDB,Vue,VSCode 集成学习
			
NodeJS,MongoDB,Vue,VSCode 集成学习 开源项目地址:http://www.mangdot.com
 - SqlServer常用语句
			
首先,写这个的原因是我其实sql语句不太行,总觉得自己写得很乱,好像也没有系统学习过,借此复习和与大家探讨 No.1 关于查询时间区间是否重叠的sql语句 问题是这样:插入之前,想查询同User是否其 ...
 - Java学习--java中的集合框架、Collection接口、list接口
			
与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...
 - 撩课-Python-每天5道面试题-第5天
			
一. 给定一个圆心和半径, 以及一个点坐标, 判定该点是否在圆内; 例如: 用户输入圆心: (1, 2) 半径: 2.5 测试点为(2, 2)结果: 判定测试点是在圆内 思路: 结合勾股定理, 计算测 ...
 - Java集成groovy之GroovyShell、GroovyScriptEngine、GroovyClassLoader
			
GroovyClassLoader 用 Groovy 的 GroovyClassLoader ,动态地加载一个脚本并执行它的行为.GroovyClassLoader是一个定制的类装载器,负责解释加载J ...
 - java设计模式-----5、原型模式
			
原型(Prototype)模式是一种对象创建型模式,他采取复制原型对象的方法来创建对象的实例.使用原型模式创建的实例,具有与原型一样的数据. 原型模式的特点: 1.由原型对象自身创建目标对象.也就是说 ...
 - JSP总结摘要
			
一 概述 1.什么是JSP? Java Server Pages,服务器端负责页面展示的技术,可以嵌套java语言,以取代使用Servlet生成页面的方式,底层被转化为Servlet. 二 路径 1. ...
 - laravel之引入验证码类
			
1.将验证码类文件夹放入到指定的位置,放入位置可以自定义 2.在控制器中引入验证码文件 3.在验证码文件中可以根据自己的需要,对验证码的内容进行编辑(包括背景,画线,边框,内容) 4.在入口文件中开启 ...
 - js判断pc端和移动端的方法
			
function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", " ...