我們考慮將一個節點x的所有兒子的數都改成y

記lcm[x]表示一個點的所有子節點的lcm值

那麼我們會發現y*deg[x] 要被lcm[x]整除

那麼x就會比x所有子節點最小的數小,記為z

那麼x就是比z小的數中,可以整除lcm[x]/deg[x]的最大的數

會不會導致x不能整除它對應的lcm?不會

因為lcm[x]/deg[x]就是它所有子節點的lcm,可以整除x的所有子節點

#include<bits/stdc++.h>
using namespace std;
long long lcs[100010],ans,a[100010],vis[100010],n;
long long lcm(long long a,long long b){return a*b/__gcd(a,b);}
vector<int>v[100010];
void dfs(int x){
	vis[x]=1;
	if(a[x]!=0){
		lcs[x]=1;
		return;
	}
	long long sc=0,minn=1e15,sum=0;
	lcs[x]=1;
	for(int i=0;i<(int)v[x].size();i++)
		if(vis[v[x][i]]==0){
			dfs(v[x][i]);
			sum+=a[v[x][i]];
			sc++;
			minn=min(minn,a[v[x][i]]);
			lcs[x]=lcm(lcs[x],lcs[v[x][i]]);
		}
	lcs[x]*=sc;
	long long m=minn-(minn%(lcs[x]/sc));
	ans+=sum-m*sc;
	a[x]=m*sc;
}
int main(){
	freopen("pylon.in","r",stdin);
	freopen("pylon.out","w",stdout);
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	for(int i=1;i<n;i++){
		int x,y;
		scanf("%d %d",&x,&y);
		v[x].push_back(y);
		v[y].push_back(x);
	}
	dfs(1);
	printf("%lld",ans);
}

jzoj3519的更多相关文章

随机推荐

  1. 关于bootstrap的认识

    学习一个框架最好的方法当然就是去它的官网查看它的官方文档,看看官网是怎么描述这个框架的吧------Sleek, intuitive, and powerful front-end framework ...

  2. mvn 使用

    简介 本文将介绍基于 Apache Maven 3 的项目构建的基本概念和方法.Maven 是一套标准的项目构建和管理工具,使用统一规范的脚本进行项目构建,简单易用,摒弃了 Ant 中繁琐的构建元素, ...

  3. [SoapUI] 配置默认环境的properties

    <Envs> <Env id="Live,Default environment"> <Project> <CusProperty nam ...

  4. IE8以下支持css3 border-radius渲染方法

    这两天在做个集团网站,web前端妹子技术水平不咋样,写个web和wap 真够费劲的,对之前流行的H5和css3 响应式看来不太会用,扔给我一个半成品~~·非说各种canvas和border-radiu ...

  5. 什么是@guid

    我将给大家讲解史上最通俗一同guid与ID的区别...

  6. 8.15 自定义tr行 滚动 信息行的滚动

    <table class="zixun-con-table"> <tr class="hover"> <th style=&quo ...

  7. springmvc 整合shiro

    1.引用maven <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro ...

  8. Monte carlo

    转载 http://blog.sciencenet.cn/blog-324394-292355.html 蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数 ...

  9. Oracle之SQL语句性能优化(34条优化方法)

    (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处 ...

  10. “无后端”的web应用开发模式

    最近看到前端趋势2013大会上的一篇文章,题目是<各位快看,不用后端>,觉得有点意思,恰好近期的一次讨论及半年前的一次开发实践也涉及到这种模式,简单谈谈我的想法. 不得不说,文章的题目确实 ...