HRBUST 1849 商品中心
智商掉线...
可以发现一条边能贡献其他点当且仅当两点路径上这个边权值最小,所以如果按照边权从大到小加边,每加一条边就会合并两个联通块,那么一个联通块内的点到另一个联通块的点的权值就都是那条边的边权,所以可以给两个联通块内的点答案分别加上边权\(*\)另一个联通块点数.然后这个可以用类似重构树的方法维护,具体是每次给两个联通块根节点打标记,然后查询某个点就是根到这个点路径上的标记和
#include<bits/stdc++.h>
#define LL long long
#define uLL unsigned long long
#define db double
using namespace std;
const int N=2e5+10;
int rd()
{
int x=0,w=1;char ch=0;
while(ch<'0'||ch>'9'){if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
struct node{int x;LL y;};
struct edge
{
int x,y,z;
bool operator < (const edge &bb) const {return z>bb.z;}
}e[N];
int n,pt,ff[N<<1],sz[N<<1],ch[N<<1][2];
LL tg[N<<1],ans;
int findf(int x){return ff[x]==x?x:ff[x]=findf(ff[x]);}
queue<node> q;
int main()
{
while(~scanf("%d",&n))
{
for(int i=1;i<=n;++i)
ff[i]=i,sz[i]=1;
for(int i=1;i<=n+n;++i) tg[i]=ch[i][0]=ch[i][1]=0;
for(int i=1;i<n;++i)
{
int x=rd(),y=rd(),z=rd();
e[i]=(edge){x,y,z};
}
sort(e+1,e+n);
pt=n;
for(int i=1;i<n;++i)
{
int x=findf(e[i].x),y=findf(e[i].y),z=e[i].z;
tg[x]+=1ll*sz[y]*z,tg[y]+=1ll*sz[x]*z;
++pt,ff[x]=ff[y]=ff[pt]=pt,sz[pt]=sz[x]+sz[y],ch[pt][0]=x,ch[pt][1]=y;
}
ans=0;
q.push((node){pt,0});
while(!q.empty())
{
int x=q.front().x;
LL di=q.front().y;
q.pop();
ans=max(ans,di);
if(!x) continue;
q.push((node){ch[x][0],di+tg[ch[x][0]]});
q.push((node){ch[x][1],di+tg[ch[x][1]]});
}
printf("%lld\n",ans);
}
return 0;
}
HRBUST 1849 商品中心的更多相关文章
- Java生鲜电商平台-订单中心服务架构与异常订单逻辑
Java生鲜电商平台-订单中心服务架构与异常订单逻辑 订单架构实战中阐述了订单系统的重要性,并从订单系统的信息架构和流程上对订单系统有了总体认知,同时还穿插着一些常见的订单业务规则和逻辑.上文写到订单 ...
- Java生鲜电商平台-商品基础业务架构设计-商品设计
Java生鲜电商平台-商品基础业务架构设计-商品设计 在生鲜电商的商品中心,在电子商务公司一般是后台管理商品的地方.在前端而言,是商家为了展示商品信息给用户的地方,它是承担了商品的数据,订单,营销活动 ...
- 浅谈我对DDD领域驱动设计的理解
从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...
- ENode框架Conference案例分析系列之 - 上下文划分和领域建模
前面一片文章,我介绍了Conference案例的核心业务,为了方便后面的分析,我这里再列一下: 业务描述 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台.这个系统的 ...
- ENode框架Conference案例分析系列之 - 订单处理减库存的设计
前言 前面的文章,我介绍了Conference案例的业务.上下文划分.领域模型.架构,以及代码整体流程.接下来想针对案例中一些重要的场景,分别做进一步的分析.本文想先介绍一下Conference案例的 ...
- ENode框架Conference案例分析系列之 - 事件溯源如何处理重构问题
前言 本文可能对大多数不太了解ENode的朋友来说,理解起来比较费劲,这篇文章主要讲思路,而不是一上来就讲结果.我写文章,总是希望能把自己的思考过程尽量能表达出来,能让大家知道每一个设计背后的思考的东 ...
- 领域驱动设计(DDD)部分核心概念的个人理解
领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...
- #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案
郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中 ...
- ElasticSearch大数据分布式弹性搜索引擎使用
阅读目录: 背景 安装 查找.下载rpm包 .执行rpm包安装 配置elasticsearch专属账户和组 设置elasticsearch文件所有者 切换到elasticsearch专属账户测试能否成 ...
随机推荐
- JavaWeb-SpringBoot_一个类实现腾讯云SDK发送短信
腾讯云应用列表 传送门 使用Gradle编译项目 传送门 SDK&API:qcloudsms_java 传送门 package com.Gary.sms.controller; import ...
- Redis的一点笔记
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 优势: 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s . 丰富 ...
- JS Generator yield
function show() { console.log('a') console.log('b') } show() // 普通函数 function *show2() { console.log ...
- yue
1. 字节流与二进制文件 1.我的代码 public class Student { private int id; private String name; private int age; pri ...
- Python统计学statistics实战
python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...
- IDEA创建maven各种原型项目汇总
1: internal -> appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型) 2: internal -> appfus ...
- 线程池的管理类MyThreadPoolManager
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Executor; import java.ut ...
- jenkins与docker(DevOps二)
Jenkins官网 https://jenkins.io/download/ centos 7安装Docker https://www.cnblogs.com/stulzq/p/7743073.htm ...
- java下载文件时文件名出现乱码的解决办法
转: java下载文件时文件名出现乱码的解决办法 2018年01月12日 15:43:32 橙子橙 阅读数:6249 java下载文件时文件名出现乱码的解决办法: String userAgent ...
- PyQt GUI--信号与槽
目录 目录 前言 系统软件 GUI的主循环 信号与槽 信号的应用 使用控件类的内建信号 自定义信号 带参数的信号 槽的应用 创建槽 信号和槽的连接 最后 前言 PyQt中的信号和槽,就是一个触发和执行 ...