我們考慮將一個節點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. spring mvc 用cookie和拦截器实现自动登录(/免登录)

    Cookie/Session机制详解:http://blog.csdn.net/fangaoxin/article/details/6952954 SpringMVC记住密码功能:http://blo ...

  2. 2018.10.23 NOIP模拟 行星通道计划(bit)

    传送门 卡常题. 成功卡掉了作死写树套树的zxy. 然而对我的二维bit无能为力. 直接维护两棵bit. bit1[i][j]bit1[i][j]bit1[i][j]表示左端点小于等于iii,右端点小 ...

  3. 2018.09.29 bzoj3039: 玉蟾宫(悬线法)

    传送门 悬线法的板子题. 悬线法只需要保存当期点向下最多多少个,把这个当成一条线,再处理出线绷直之后最多能向左右延展多少就行了. 代码: #include<bits/stdc++.h> # ...

  4. 2018.09.05 任务安排(斜率优化dp)

    描述 这道题目说的是,给出了n项必须按照顺序完成的任务,每项任务有它需要占用机器的时间和价值.现在我们有一台机器可以使用,它每次可以完成一批任务,完成这批任务所需的时间为一个启动机器的时间S加上所有任 ...

  5. 2018.08.16 洛谷P3607 [USACO17JAN]序列反转(线性dp)

    传送门 一道感觉比较简单的dp. 注意是要求翻转一个子序列而不是一段连续的数(被坑了很多次啊)... 看到数据范围果断开一个四维数组来dp一波. 我们显然可以用f[i][j][k][t]表示下标在[l ...

  6. Django入门与实践-第22章:基于类的视图

    http://127.0.0.1:8000/boards/1/topics/2/posts/2/edit/ http://127.0.0.1:8000/ #boards/views.py from d ...

  7. nvarchar,varchar 区别

        char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.   nva ...

  8. day15(mysql之零碎知识)

    数据完整性 实体完整性 实体: 表中一行(一行记录)代替一个实体 实体完整性的作用: 标识每一行数据不重复. 约束类型: 主键约束, 唯一约束,自动增长列. 主键约束: 标识该列唯一,非空. 注:   ...

  9. 设置p标签可编辑

    一,只可编辑,粘贴复制字段长度不正常 <p contenteditable="true" >这是一个可编辑内容的p标签啦啦~</p> 二,可编辑,可粘贴复制 ...

  10. codevs 1083

    这道题是看了人家大牛的解题报告: 对了,要说明一下,(A+B)&1 ,表示,判断(A+B)是奇数否? 下面给出代码: #include<iostream> #include< ...