树上每个元素有一个p,元素之间有距离d,计算一个元素u,使得sigma(d(i,u)*pi)最小。

两次dfs,第一次计算本节点以下的sigma(),第二次利用sump求解出ans。

 #include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <map> using namespace std; const int maxn = +; int fa[maxn];
long long N,chp[maxn],ans[maxn],chsum[maxn],save_p[maxn],save_up[maxn];
long long sump;
long long final_ans;
int ans_idx; vector <int> G[maxn];
map<pair<int,int> ,int> save_dis; void dfs(int u,int p)
{
int d = G[u].size();
for(int i=;i<d;i++)
{
int v = G[u][i];
if(p != v)
{
chp[u] += save_p[v];
dfs(v,fa[v] = u);
chp[u] += chp[v];
chsum[u] += (chsum[v]+ save_dis[pair<int,int>(u,v)] *(save_p[v]+chp[v]));
}
}
//printf("index:%d chsum:%d\n",u,chsum[u]);
} void solve(int u,int p)
{
int d = G[u].size();
int disp = save_dis[pair<int,int>(u,p)]; if(p != -)
{
ans[u] =chsum[u] + (ans[p]-(chsum[u]+disp*(save_p[u]+chp[u]))) + disp*(sump-chp[u]-save_p[u]);
//final_ans = min(ans[u],final_ans);
//printf("index:%d ans:%d chp:%d dis:%d\n",u,ans[u],chp[u],disp);
if(final_ans > ans[u])
{
ans_idx = u;
final_ans = ans[u];
}
} for(int i=;i<d;i++)
{
int v = G[u][i];
if(p != v)
{
solve(v,u);
}
}
} int main()
{
freopen("house.in","r",stdin);
freopen("house.out","w",stdout); scanf("%d",&N);
for(int i=;i<=N;i++)
{
scanf("%d",&save_p[i]);
sump += save_p[i];
}
for(int i=;i<N-;i++)
{
int u,v,dis;
scanf("%d%d%d",&u,&v,&dis);
G[u].push_back(v);
G[v].push_back(u); save_dis[pair<int,int>(u,v)] = dis;
save_dis[pair<int,int>(v,u)] = dis; } int root = ;
fa[root] = -;
dfs(root,-); ans[root] = chsum[root];
final_ans = ans[root];
ans_idx = root;
solve(root,-);
printf("%d %lld\n",ans_idx,final_ans);
}

Gym100496H-House of Representatives-树的更多相关文章

  1. 【BZOJ-3832】Rally 拓扑序 + 线段树 (神思路题!)

    3832: [Poi2014]Rally Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 168  Solved:  ...

  2. B树——算法导论(25)

    B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的, ...

  3. ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

    前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...

  4. 再讲IQueryable<T>,揭开表达式树的神秘面纱

    接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个风生水起,感觉不整个自己的orm都不好意思继续混博客园了(开个玩笑).那么 ...

  5. HDU1671——前缀树的一点感触

    题目http://acm.hdu.edu.cn/showproblem.php?pid=1671 题目本身不难,一棵前缀树OK,但是前两次提交都没有成功. 第一次Memory Limit Exceed ...

  6. 算法与数据结构(十一) 平衡二叉树(AVL树)

    今天的博客是在上一篇博客的基础上进行的延伸.上一篇博客我们主要聊了二叉排序树,详情请戳<二叉排序树的查找.插入与删除>.本篇博客我们就在二叉排序树的基础上来聊聊平衡二叉树,也叫AVL树,A ...

  7. [C#] C# 知识回顾 - 表达式树 Expression Trees

    C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...

  8. bzoj3207--Hash+主席树

    题目大意: 给定一个n个数的序列和m个询问(n,m<=100000)和k,每个询问包含k+2个数字:l,r,b[1],b[2]...b[k],要求输出b[1]~b[k]在[l,r]中是否出现. ...

  9. bzoj1901--树状数组套主席树

    树状数组套主席树模板题... 题目大意: 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[ ...

  10. bzoj3932--可持久化线段树

    题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...

随机推荐

  1. mysql的模糊匹配

    实例: SQL模糊查询,使用like比较关键字,加上SQL里的通配符,请参考以下: 1.LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden). 2.LIKE'%inger' ...

  2. sublime插件不能使用,提示plugin_host has exited unexpectedly

    sublime Text3一打开软件就提示plugin_host has exited unexpectedly,插件不能使用 解决方法很简单: 1.首先,ctrl + shift + p  --&g ...

  3. 从 0 到 1 实现 React 系列 —— 3.生命周期和 diff 算法

    看源码一个痛处是会陷进理不顺主干的困局中,本系列文章在实现一个 (x)react 的同时理顺 React 框架的主干内容(JSX/虚拟DOM/组件/生命周期/diff算法/setState/ref/. ...

  4. 05 Django REST Framework 分页

    01-分页模式 rest framework中提供了三种分页模式: from rest_framework.pagination import PageNumberPagination, LimitO ...

  5. PS调出通透唯美阳光外景女生照片

    1.稍微增加了一点曝光度,让照片更明亮. 2.对比度的话我现在比习惯加一点,而且 一般导入PS之后我还会按照片情况去加对比度. 3.高光的部分一般会拉回来一点,根据照片调. 4.阴影部分加一点的话会让 ...

  6. p67交换幺环为整环的充要条件

    如何理解并且证明这个定理?谢谢 (0)是素理想,也是就是说,只要ab∈(0)就有a∈(0)或者b∈(0) 这等价于说 ab=0就有a=0或b=0. 它这里给的证明是什么意思呢?它是利用了素理想的等价刻 ...

  7. Servlet 使用ServletConfig对象来配置Servlet

    ServletContext和ServletConfig的关联 相同点: 1.都可以用来配置Servlet 2.都可以写在web.xml中. 区别点: 1.ServletContext对象,对于所有的 ...

  8. PHP优化与提升

    一.十个不错的建议 1.使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里.这种方法把存储空间降到了接近四分之一(char(15) 的 15 个字节对整形的 ...

  9. 把composer的源切换为 国际的源

      把composer的源切换为 国际的源:composer config -g repo.packagist composer https://packagist.org

  10. [转帖]一段关于Unix与 Linux的暗黑史

    一段关于Unix与 Linux的暗黑史 https://blog.csdn.net/a343315623/article/details/51436715 微软曾经开发过 MS-DOS Xenix O ...