【树形DP/搜索】BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会
1827: [Usaco2010 Mar]gather 奶牛大集会
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 793 Solved: 354
[Submit][Status][Discuss]
Description

Input
Output
Sample Input
1
1
0
0
2
1 3 1
2 3 2
3 4 3
4 5 3
Sample Output
先求每个点的子树点数
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath> #define maxn 100001 using namespace std; long long tot=,w[maxn],f[maxn],ans; inline int in()
{
int x=;char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch<=''&&ch>='')x=x*+ch-'',ch=getchar();
return x;
} struct ed{
int to,c,last;
}edge[maxn*]; int last[maxn],cnt=,a[maxn]; bool vis[maxn]; void add(int u,int v,int c)
{
edge[++cnt].to=v,edge[cnt].c=c,edge[cnt].last=last[u],last[u]=cnt;
edge[++cnt].to=u,edge[cnt].c=c,edge[cnt].last=last[v],last[v]=cnt;
} void DP(int pos)
{
w[pos]=a[pos];vis[pos]=;
for(int i=last[pos];i;i=edge[i].last)
{
int u=edge[i].to;
if(vis[u])continue;
DP(u);
w[pos]+=w[u];
f[pos]+=w[u]*edge[i].c+f[u];
}
} void dfs(int poi,long long val)
{
vis[poi]=;ans=min(ans,val);
for(int i=last[poi];i;i=edge[i].last)
if(!vis[edge[i].to])
dfs(edge[i].to,val+(tot-*w[edge[i].to])*edge[i].c);
} int main()
{
int n,u,v,c;
n=in();
for(int i=;i<=n;i++)a[i]=in(),tot+=a[i];
for(int i=;i<n;i++)
{
u=in();v=in();c=in();
add(u,v,c);
}
DP();ans=f[];
memset(vis,,sizeof(vis));
dfs(,f[]);
printf("%lld",ans);
return ;
}
【树形DP/搜索】BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会的更多相关文章
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会( dp + dfs )
选取任意一个点为root , size[ x ] 表示以 x 为根的子树的奶牛数 , dp一次计算出size[ ] && 选 root 为集会地点的不方便程度 . 考虑集会地点由 x ...
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会 树形DP
[Usaco2010 Mar]gather 奶牛大集会 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1 ...
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会
Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1<=N<=100,0 ...
- BZOJ 1827 [Usaco2010 Mar]gather 奶牛大集会(树形DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1827 [题目大意] 给出一棵有点权和边权的树, 请确定一个点,使得每个点到这个点的距离 ...
- bzoj 1827: [Usaco2010 Mar]gather 奶牛大集会【树形dp】
不能用read会TLE!!不能用read会TLE!!不能用read会TLE!! 一开始以为要维护每个点,线段树写了好长(还T了-- 首先dfs一遍,求出点1为集会地点的答案,处理处val[u]为以1为 ...
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会 树形DP + 带权重心
Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1<=N<=100,0 ...
- 【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集会(树形dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1827 仔细想想就好了,, 每个点维护两个值,一个是子树的费用,一个是除了子树和自己的费用.都可以用d ...
- 【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集会
[算法]树型DP||树的重心(贪心) [题解] 两遍DFS,第一次得到所有节点子树的路径和,第二次给出除了该子树外其它部分的路径和,时时计算答案. long long!!! #include<c ...
- 【BZOJ1827】[Usaco2010 Mar]gather 奶牛大集会 树形DP
[BZOJ][Usaco2010 Mar]gather 奶牛大集会 Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来 ...
随机推荐
- Hadoop集群“WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable”解决办法
Hadoop集群部署完成后,经常会提示 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfo ...
- [老老实实学WCF] 第二篇 配置WCF
老老实实学WCF 第二篇 配置WCF 在上一篇中,我们在一个控制台应用程序中编写了一个简单的WCF服务并承载了它.先回顾一下服务端的代码: using System; using System.Col ...
- 关联表映射 Association Table Mapping
把关联保存为一个表,存储关联表的外键 在对象中,使用集合作为域值,来处理多值域. 而在DB中,只能有单值域. 外键映射的核心,是在关联关系的单值端使用外键来维持联系. 而在多对多的关联关系中,已经不存 ...
- Linux实现的IEEE 802.q VLAN
本文转载自: http://blog.chinaunix.net/uid-20786208-id-4291059.html Technorati 标签: Linux VLAN ---------- ...
- 分支优化:neg+sbb算术运算代替逻辑跳转
今天在分析一个样本的时候,发现一段代码. // .text:100012DF sub esi, 0B7h // 183 // .text:100012E5 neg esi // .text:10001 ...
- 【风马一族_Android】手机与电脑通过adb进行连接
1:打开电脑的命令行 cmd 2:adb devices 查看与电脑连接的手机或模拟器的名称 3:准备要安装的apk.记住手机的名称 4:adb –s <模拟器名称> install & ...
- netstat监控大量ESTABLISHED连接与Time_Wait连接问题(转载)
问题描述: 在不考虑系统负载.CPU.内存等情况下,netstat监控大量ESTABLISHED连接与Time_Wait连接. # netstat -n | awk '/^tcp/ {++y[$NF] ...
- .Net 将一个DataTable分解成多个DataTable
这两天遇到一个问题,我们所接触 的一个系统在导出数据到Excel的时候,产生了内存溢出的错误.原因在于数据过大,它导出是将所有数据存放在一个DataSet的一个表中,再将这个数 据集放入session ...
- 跟着PHP100第一季学写一个CMS(11-20)
PS.刚发现IE并不兼容,有点悲剧 cms1.1密码处理 1.小知识:sha1($_answer) //加密为40位,不知道能不能破解 2.小知识:mysql_real_escape_string( ...
- linux终端io笔记
简介 终端的两种工作模式:以行为单位的工作模式,以字符数或时间为单位自定义模式 终端判断函数: int isatty(int fd) 终端属性的获取与设置: int tcgetattr(int fd, ...