[Usaco2010 Mar]gather 奶牛大集会

1827: [Usaco2010 Mar]gather 奶牛大集会

Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1129  Solved: 525 [Submit][Status][Discuss]

Description

Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。每个奶牛居住在 N(1<=N<=100,000) 个农场中的一个,这些农场由N-1条道路连接,并且从任意一个农场都能够到达另外一个农场。道路i连接农场A_i和B_i(1 <= A_i <=N; 1 <= B_i <= N),长度为L_i(1 <= L_i <= 1,000)。集会可以在N个农场中的任意一个举行。另外,每个牛棚中居住者C_i(0 <= C_i <= 1,000)只奶牛。在选择集会的地点的时候,Bessie希望最大化方便的程度(也就是最小化不方便程度)。比如选择第X个农场作为集会地点,它的不方便程度是其它牛棚中每只奶牛去参加集会所走的路程之和,(比如,农场i到达农场X的距离是20,那么总路程就是C_i*20)。帮助Bessie找出最方便的地点来举行大集会。 考虑一个由五个农场组成的国家,分别由长度各异的道路连接起来。在所有农场中,3号和4号没有奶牛居住。

Input

第一行:一个整数N * 第二到N+1行:第i+1行有一个整数C_i * 第N+2行到2*N行,第i+N+1行为3个整数:A_i,B_i和L_i。

Output

* 第一行:一个值,表示最小的不方便值。

Sample Input

5
1
1
0
0
2
1 3 1
2 3 2
3 4 3
4 5 3

Sample Output

15
先把子树上所有点移动到根的值计算出来,把移动到1的值设为初始答案,发现如果一个孩子如果更优,那么一定满足$2*siz>tot$,显然只可能有一个孩子满足,那就贪心地移动即可
#include <cstdio>
char buf[10000000], *ptr = buf - 1;
inline int readint(){int n = 0;char ch = *++ptr;while(ch < '0' || ch > '9') ch = *++ptr;while(ch <= '9' && ch >= '0'){n = (n << 1) + (n << 3) + ch - '0';ch = *++ptr;}return n;
}
typedef long long ll;
const int maxn = 100000 + 10;
struct Edge{int to, val, next;Edge(){}Edge(int _t, int _v, int _n): to(_t), val(_v), next(_n){}
}e[maxn * 2];
int fir[maxn] = {0}, cnt = 0;
inline void ins(int u, int v, int w){e[++cnt] = Edge(v, w, fir[u]); fir[u] = cnt;e[++cnt] = Edge(u, w, fir[v]); fir[v] = cnt;
}
int c[maxn];
ll f[maxn], siz[maxn], ans;
void dfs1(int u, int fa){f[u] = 0;siz[u] = c[u];for(int v, i = fir[u]; i; i = e[i].next){v = e[i].to;if(v == fa) continue;dfs1(v, u);f[u] += f[v] + siz[v] * e[i].val;siz[u] += siz[v];}
}
void dfs2(int u, int fa){for(int v, i = fir[u]; i; i = e[i].next){v = e[i].to;if(v == fa) continue;if(siz[1] - 2 * siz[v] < 0){ans += (siz[1] - 2 * siz[v]) * e[i].val;dfs2(v, u);}}
}
int main(){fread(buf, sizeof(char), sizeof(buf), stdin);int N = readint();for(int i = 1; i <= N; i++) c[i] = readint();for(int u, v, w, i = 1; i < N; i++){u = readint();v = readint();w = readint();ins(u, v, w);}dfs1(1, 0);ans = f[1];dfs2(1, 0);printf("%lld\n", ans);return 0;
}

 

转载于:https://www.cnblogs.com/ruoruoruo/p/7512378.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251853.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

与TIME_WAIT相关的几个内核参数

问题 公司用浏览器访问线上服务一会失败一会成功&#xff0c;通过ssh连接服务器排查时发现ssh也是这样&#xff1b; 检查 抓包后发现建立连接的请求已经到了服务器&#xff0c;但它没有响应&#xff1b; 纠结了好久&#xff0c;后来在腾讯云技术支持及查了相关资料后发现是开启…

View的绘制-layout流程详解

目录 作用 根据 measure 测量出来的宽高&#xff0c;确定所有 View 的位置。 具体分析 View 本身的位置是通过它的四个点来控制的&#xff1a; 以下涉及到源码的部分都是版本27的&#xff0c;为方便理解观看&#xff0c;代码有所删减。 layout 的流程 先通过 measure 测量出 Vi…

1-1、作用域深入和面向对象

课时1&#xff1a;预解释 JS中的数据类型 number、string、 boolean、null、undefined JS中引用数据类型 object: {}、[]、/^$/、Date Function var num12; var obj{name:白鸟齐鸣,age:10}; function fn(){ console.log(勿忘初心方得始终&#xff01;) }console.log(fn);//把整…

茶杯头开枪ahk代码

;说明这个工具是为了茶杯头写的,F1表示换枪攻击,F3表示不换枪攻击,F2表示停止攻击. $F1::loop{ GetKeyState, state, F2, Pif state D{break } Send, {l down}Send, {l up}sleep,10Send,{m down}Send,{m up} }return $F3::loop{ GetKeyState, state, F2, Pif state D{break }…

Vim使用技巧:撤销与恢复撤销

在使用VIM的时候&#xff0c;难免会有输错的情况&#xff0c;这个时候我们应该如何撤销&#xff0c;然后回到输错之前的状态呢&#xff1f;答案&#xff1a;使用u&#xff08;小写&#xff0c;且在命令模式下&#xff09;命令。 但如果有时我们一不小心在命令模式下输入了u&…

PaddlePaddle开源平台的应用

最近接触了百度的开源深度学习平台PaddlePaddle&#xff0c;想把使用的过程记录下来。 作用&#xff1a;按照这篇文章&#xff0c;能够实现对图像的训练和预测。我们准备了四种颜色的海洋球数据&#xff0c;然后给不同颜色的海洋球分类为0123四种。 一、安装paddlepaddle 1.系统…

Hyperledger Fabric区块链工具configtxgen配置configtx.yaml

configtx.yaml是Hyperledger Fabric区块链网络运维工具configtxgen用于生成通道创世块或通道交易的配置文件&#xff0c;configtx.yaml的内容直接决定了所生成的创世区块的内容。本文将给出configtx.yaml的详细中文说明。 如果需要快速掌握Fabric区块链的链码与应用开发&#x…

js闭包??

<script>var name "The Window";var object {name : "My Object",getNameFunc : function(){console.log("11111");console.log(this); //this object //调用该匿名函数的是对象return function(){console.log("22222");co…

JavaScript----BOM(浏览器对象模型)

BOM 浏览器对象模型 BOM 的全称为 Browser Object Model,被译为浏览器对象模型。BOM提供了独立于 HTML 页面内容&#xff0c;而与浏览器相关的一系列对象。主要被用于管理浏览器窗口及与浏览器窗口之间通信等功能。 1、Window 对象 window对象是BOM中最顶层对象&#xff1b;表示…

JWT协议学习笔记

2019独角兽企业重金招聘Python工程师标准>>> 官方 https://jwt.io 英文原版 https://www.ietf.org/rfc/rfc7519.txt 或 https://tools.ietf.org/html/rfc7519 中文翻译 https://www.jianshu.com/p/10f5161dd9df 1. 概述 JSON Web Token&#xff08;JWT&#xff09;是…

DOM操作2

一、API和WebAPI API就是接口&#xff0c;就是通道&#xff0c;负责一个程序和其他软件的沟通&#xff0c;本质是预先定义的函数。Web API是网络应用程序接口。包含了广泛的功能&#xff0c;网络应用通过API接口&#xff0c;可以实现存储服务、消息服务、计算服务等能力&#x…

浮动布局demo

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>浮动布局</title><style type"text/css">*{margin: 0;padding: 0;}header{height: 150px;background: yellow;}nav{height: 30px;background: green;…

UI行业发展预测 系列规划的调整

我又双叒叕拖更了&#xff0c;上一篇还是1月22号更新的&#xff0c;这都3月9号了……前面几期把职业规划、能力分析、几个分析用的设计理论都写完了&#xff0c;当然实际工作中用到的方法论不止上面这些&#xff0c;后续会接着学习&#xff1b;如果你的目标是一线团队&#xff…

出现Press ENTER or type command to continue的原因

cd 然后 vim .vimrc 写入 set nu 保存 退出转载于:https://www.cnblogs.com/520qtf/p/8968441.html

基于Flask实现后台权限管理系统 - 导言

网上有这样一个段子&#xff0c;在评论语言好坏的时候&#xff0c;都会有人评论说PHP是世界上最好的语言&#xff0c;人生苦短我用Python&#xff0c;这里姑且不去评论语言的好坏&#xff0c;每一个语言存在都有它的价值&#xff0c;譬如C语言适合底层开发&#xff0c;整个Linu…

5-1 unittest框架使用

unittest是python的一个单元测试框架&#xff0c;内置的&#xff0c;不需要pip install 什么什么的。直接在py文件里面调用 import unittest。 他这个框架是怎么回事呢&#xff0c;他可以对数据初始化&#xff0c;然后执行测试&#xff08;里面有断言功能就是判断返回是否正确…

bzoj 4573: [Zjoi2016]大森林

Description 小Y家里有一个大森林&#xff0c;里面有n棵树&#xff0c;编号从1到n。一开始这些树都只是树苗&#xff0c;只有一个节点&#xff0c;标号为1。这些树 都有一个特殊的节点&#xff0c;我们称之为生长节点&#xff0c;这些节点有生长出子节点的能力。小Y掌握了一种魔…

Unity3D在C#编程中的一些命名空间的引用及说明

System包含用于定义常用值和引用数据类型、事件和事件处理程序、接口、属性和处理异常的基础类和基类。其他类提供支持下列操作的服务&#xff1a;数据类型转换&#xff0c;方法参数操作&#xff0c;数学计算&#xff0c;远程和本地程序调用&#xff0c;应用程序环境管理以及对…

docker入门简介

简介docker(容器技术)是实现虚拟化技术的一种方案,通过利用linux中命名空间,控制组和联合文件系统这个三个主要技术,来实现应用程序空间的隔离.通过对应用程序运行环境的封装来生成镜像并部署来实现跨平台,一定程度上加快了服务交付的整体流程.这篇文章主要介绍docker的一些基本…

Highcharts 配置选项详细说明

http://www.runoob.com/highcharts/highcharts-setting-detail.html 转载于:https://www.cnblogs.com/mengfangui/p/8969121.html