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 ...
随机推荐
- 使用VirtualBox虚拟机搭建局域网
参考资料: http://www.awaimai.com/995.html https://my.oschina.net/cofecafe1/blog/206535 最近公司局域网网络改造,在改造前已 ...
- Spring Shell简单应用
大致:想要使用Spring Shell,则项目需要是 Spring Boot项目,下面贴出结构和代码 1.POM依赖 <?xml version="1.0" encoding ...
- Codeforces Round #209 (Div. 2) C - Prime Number
传送门 题意 给出n个数及x,求 \[\frac{\sum _{i=1}^n x^{a_1+a_2+...+a_{i-1}+a_{i+1}+...a_n}}{\prod_{i=1}^n x^{a_i} ...
- 阿里云CentOS7.4启动Tomcat9没有报错,端口已经开放,但是浏览器一直等待响应解决办法7
tomcat9,启动和退出均无报错.centOS7.4防火墙已关闭,阿里云防火墙已经开放端口,telnet测试服务器的端口也通过了,**浏览器访问以后没有提示"无法访问",而是一直 ...
- B Balala Power!
Bryce1010模板 每个字母所在位置对应权值加和,肯定存不下. 但我们只需要26个字母对应值之间的关系即可,开一个数组a[i][j]分别记录字母i在j这个位置上出现了多少次,对于大于26的值进位, ...
- ASP.NET MVC 实现伪静态
1 什么是伪静态? 现在很多门户网站或者各大电商平台的网站的链接最后都是.htm或者.htm结尾,那么他们的网页真的是静态的html吗?拿京东来说,有无数个页面都都Html,在商品每时每刻都可能被更 ...
- Laravel5中防止XSS跨站攻击的方法
本文实例讲述了Laravel5中防止XSS跨站攻击的方法.分享给大家供大家参考,具体如下: Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HT ...
- c# -反射 初见
反射是一个很强大的功能,不过好像有些消耗性能,大家慎重使用. 1.反射是干什么的? 通过反射,我们可与获取程序集中的原数据. 1.什么是程序集? dll.exe 这些将很多能实现具体功能的代码封装起 ...
- 解决 图片在div中等比例缩放问题 (未解决:图片比例小于盒子模型时不会自动填充)
如题,该方案仅支持对图片等比例缩放.本文附件地址:https://files.cnblogs.com/files/john69-/background-Img.rar <!DOCTYPE htm ...
- ReactJS-0-React介绍
React介绍: React是一个库而不是一个MVC框架,因为React只负责解决MVC框架中V(View)层面的问题,React致力于创建可重用的UI组件.(React is a library f ...