JZOJ5776. 【NOIP2008模拟】小x游世界树
题目的附加题解给的很清楚,这里只给一个代码;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ms(a,x) memset(a,x,sizeof(a))
#define ll long long
using namespace std;
const int MAXN=;
struct node{
int y,nxt;ll z;
}edge[MAXN*];int indx=,n,head[MAXN];
ll a[MAXN],ans=0x7fffffffff,rt=,siz[MAXN],f[MAXN];
void add(int x,int y,ll z){
edge[++indx].y=y;edge[indx].z=z;
edge[indx].nxt=head[x];head[x]=indx;
}
void dp(int x,int fa){
siz[x]=;
for(int i=head[x],y;~i;i=edge[i].nxt){
if((y=edge[i].y)==fa) continue;
dp(y,x);f[x]+=1LL*edge[i].z*siz[y];
siz[x]+=siz[y];f[x]+=f[y];
} return ;
}
void dfs(int x,int fa,ll la,ll v){
la-=v*siz[x];
for(int i=head[x];~i;i=edge[i].nxt){
if(edge[i].y!=fa) continue;
la+=edge[i].z*(n-siz[x]);break;
} if(la<ans) ans=la,rt=x;
else if(la==ans) rt=min((int)x,(int)rt);
for(int i=head[x],y;~i;i=edge[i].nxt){
if((y=edge[i].y)==fa) continue;
dfs(y,x,la,edge[i].z);
} return ;
}
int main(){
// freopen("yggdrasil.in","r",stdin);
// freopen("yggdrasil.out","w",stdout);
scanf("%d",&n);ms(head,-);
for(int i=;i<=n;i++) scanf("%lld",&a[i]);
for(int i=,x,y;i<n;i++){
ll z;scanf("%d%d%lld",&x,&y,&z);
add(x,y,a[x]>?z-a[x]:z);
add(y,x,a[y]>?z-a[y]:z);
} dp(,-);ans=min(ans,f[rt]);
for(int i=head[];~i;i=edge[i].nxt)
dfs(edge[i].y,,f[],edge[i].z);
printf("%lld\n%lld\n",rt,ans);
return ;
}
树形DP与换根
JZOJ5776. 【NOIP2008模拟】小x游世界树的更多相关文章
- JZOJ 5776. 【NOIP2008模拟】小x游世界树
5776. [NOIP2008模拟]小x游世界树 (File IO): input:yggdrasil.in output:yggdrasil.out Time Limits: 1500 ms Me ...
- [题解](树形dp/换根)小x游世界树
2. 小x游世界树 (yggdrasi.pas/c/cpp) [问题描述] 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当 ...
- [jzoj 5776]【NOIP2008模拟】小x游世界树 (树形dp)
传送门 Description 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当他想前往阿瓦隆时发现那里只有圣诞节时才能到达 ...
- JZOJ 5777. 【NOIP2008模拟】小x玩游戏
5777. [NOIP2008模拟]小x玩游戏 (File IO): input:game.in output:game.out Time Limits: 1000 ms Memory Limits ...
- JZOJ 5793. 【NOIP2008模拟】小S练跑步
5793. [NOIP2008模拟]小S练跑步 (File IO): input:run.in output:run.out Time Limits: 2000 ms Memory Limits: ...
- JZOJ 5775. 【NOIP2008模拟】农夫约的假期
5775. [NOIP2008模拟]农夫约的假期 (File IO): input:shuru.in output:shuru.out Time Limits: 1000 ms Memory Lim ...
- JZOJ 5773. 【NOIP2008模拟】简单数学题
5773. [NOIP2008模拟]简单数学题 (File IO): input:math.in output:math.out Time Limits: 1000 ms Memory Limits ...
- JZOJ 5809. 【NOIP2008模拟】数羊
5809. [NOIP2008模拟]数羊 (File IO): input:sheep.in output:sheep.out Time Limits: 1000 ms Memory Limits: ...
- JZOJ 5791. 【NOIP2008模拟】阶乘
5791. [NOIP2008模拟]阶乘 (File IO): input:factorial.in output:factorial.out Time Limits: 1000 ms Memory ...
随机推荐
- redis info 参数说明
原文: redis info 参数说明 redis 127.0.0.1:6381> info redis_version:2.4.16 # Redis 的版本redis_git_sha1:000 ...
- jquery 3D云
http://www.jq22.com/jquery-info1325 http://demo.jq22.com/jquery-cloud-141217202931 下载地址: http://www. ...
- HDU2262;Where is the canteen(高斯消元+期望)
传送门 题意 给出一张图,LL从一个点等概率走到上下左右位置,询问LL从宿舍走到餐厅的步数期望 分析 该题是一道高斯消元+期望的题目 难点在于构造矩阵,我们发现以下结论 设某点走到餐厅的期望为Ek 1 ...
- Linux 常用命令十一 ps
一.ps命令 Linux中的ps命令是Process Status的缩写. ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要 ...
- bzoj 3629: [JLOI2014]聪明的燕姿【线性筛+dfs】
数论+爆搜 详见这位大佬https://blog.csdn.net/eolv99/article/details/39644419 #include<iostream> #include& ...
- 【技巧】解决win10的1803版本下,无法收到1809推送、从而无法更新到1903版本的问题。
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...
- 倒排索引构建算法BSBI和SPIMI
参考:https://blog.csdn.net/androidlushangderen/article/details/44889677 倒排索引 : 一般的索引检索信息的方式.比如原始的数据源假设 ...
- mui 每次页面跳转用mui.openWindow会不会占用很大内存?
http://ask.dcloud.net.cn/question/5384 不能每次用mui.openWindow.不用的webview要close,一个webview被close后会露出其他没有被 ...
- 人工智能-深度学习(3)TensorFlow 实战一:手写图片识别
http://gitbook.cn/gitchat/column/59f7e38160c9361563ebea95/topic/59f7e86d60c9361563ebeee5 wiki.jikexu ...
- 题解报告:hdu 1263 水果
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1263 Problem Description 夏天来了~~好开心啊,呵呵,好多好多水果~~ Joe经营 ...