jzoj3519
我們考慮將一個節點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的更多相关文章
随机推荐
- phalcon框架安装
Phalcon学习笔记 - 安装 原创 2014年10月23日 12:20:33 标签: phalcon / phalcon安装 5014 如何学习一个新的框架 1 明白工作原理 2 知道核心思想 ...
- mstsc本地驱动器
mstsc 可以把本地驱动器 挂载到服务器上
- RSA生成、加密、解密、签名。
首先,要会生成RSA密码对. https://app.alipay.com/market/document.htm?name=saomazhifu#page-23 (事例中的密钥对好像有问题,最 ...
- 项目UML设计
团队信息 队名:火箭少男100 本次作业课上成员 短学号 名 本次作业博客链接 2507 俞辛(临时队长) https://www.cnblogs.com/multhree/p/9821080.htm ...
- C语言基础第三次作业
题目7-1,寻找最小值 1.实验代码: #include<stdio.h> int main() { int i,mark,min,n; scanf("%d", &am ...
- 搭建Idea授权服务器用于学习
我自己的搭建服务器http://doit.wenyule.top 懒得看教程或弄不好的小伙伴可以用我搭建的,在激活那选择服务器,输入我上面的地址,注意可以激活2018.2.1之前的.为了防止用的人太多 ...
- Nginx中间件使用心得(三)
一.Nginx搭建系统需求 1.系统硬件:CPU >= 2Core,内存 >= 256M 2.自行搭建服务器(Linux操作系统) (1) 使用vmWare虚拟服务器 (2)使用 ...
- Can not find the tag library descriptor for "/struts-tags"`
1.查看struts.xml路径是否错误,要放在src下, 2.缺少struts-tags.tld (1)查找方式: (2)找到此包,然后右键用解压缩文件打开. (3)然后你会看到很多的源码,找到红圈 ...
- 初识Java ThreadLocal
转载自:https://www.cnblogs.com/dreamroute/p/5034726.html ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量. 这个玩意有什么用处,或 ...
- python编码(六)
1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...