NOIP2014提高组D1T2:联合权值

题目链接

NOIP2014提高组D1T2:联合权值

题目描述

无向连通图 G G G n n n 个点, n − 1 n-1 n1 条边。点从 1 1 1 n n n 依次编号,编号为 i i i 的点的权值为 W i W_i Wi,每条边的长度均为 1 1 1。图上两点 ( u , v ) (u, v) (u,v) 的距离定义为 u u u 点到 v v v 点的最短距离。对于图 G G G 上的点对 ( u , v ) (u, v) (u,v),若它们的距离为 2 2 2,则它们之间会产生 W v × W u W_v \times W_u Wv×Wu 的联合权值。

请问图 G G G 上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少?

输入格式

第一行包含 1 1 1 个整数 n n n

接下来 n − 1 n-1 n1 行,每行包含 2 2 2 个用空格隔开的正整数 u , v u,v u,v,表示编号为 u u u 和编号为 v v v 的点之间有边相连。

最后 1 1 1 行,包含 n n n 个正整数,每两个正整数之间用一个空格隔开,其中第 i i i 个整数表示图 G G G 上编号为 i i i 的点的权值为 W i W_i Wi

输出格式

输出共 1 1 1 行,包含 2 2 2 个整数,之间用一个空格隔开,依次为图 G G G 上联合权值的最大值和所有联合权值之和。由于所有联合权值之和可能很大,输出它时要对 10007 10007 10007 取余。

样例 #1

样例输入 #1

5  
1 2  
2 3
3 4  
4 5  
1 5 2 3 10

样例输出 #1

20 74

提示

样例解释

在这里插入图片描述

本例输入的图如上所示,距离为 2 2 2 的有序点对有 ( 1 , 3 ) (1,3) (1,3) ( 2 , 4 ) (2,4) (2,4) ( 3 , 1 ) (3,1) (3,1) 、$(3,5) 、 、 (4,2)$ 、$(5,3) $。

其联合权值分别为 2 , 15 , 2 , 20 , 15 , 20 2,15,2,20,15,20 2,15,2,20,15,20。其中最大的是 20 20 20,总和为 74 74 74

数据说明

  • 对于 30 % 30\% 30% 的数据, 1 < n ≤ 100 1 < n \leq 100 1<n100
  • 对于 60 % 60\% 60% 的数据, 1 < n ≤ 2000 1 < n \leq 2000 1<n2000
  • 对于 100 % 100\% 100% 的数据, 1 < n ≤ 2 × 1 0 5 1 < n \leq 2\times 10^5 1<n2×105 0 < W i ≤ 10000 0 < W_i \leq 10000 0<Wi10000

保证一定存在可产生联合权值的有序点对。

算法思想

根据题目描述,无向连通图 G G G n n n 个点, n − 1 n-1 n1 条边,说明该图是一棵树。对于一棵树来说,距离为 2 2 2的点对有下面两种情况,姑且称为“一字形”和“八字形”:
在这里插入图片描述

对于一字形来说, f a fa fa v v v之间的联合权值为 W f a × W v W_{fa} \times W_v Wfa×Wv ,可以直接求其中的最大值和所有联合权值之和。
对于八字型来说,可以将当前节点 u u u的所有子节点 v 1 , v 2 . . . v_1,v_2... v1,v2...两两配对,求其中的最大值和所有联合权值之和。由于每个点的权值 W i > 0 W_i>0 Wi>0,因此可以维护一个前缀最大值pre_max和前缀和pre_sum。这样每一点线性扫描一遍即可,不需要 O ( n 2 ) O(n^2) O(n2) 枚举。

值得注意的是 ( u , v ) (u, v) (u,v) ( v , u ) (v, u) (v,u)是两个不同的点对,因此在计算最终联合权值之和时要乘 2 2 2

代码实现

#include <bits/stdc++.h>
using namespace std;
const int N = 200005, mod = 10007;
int w[N], ans_max, ans_sum;
vector<int> g[N];
void dfs(int u, int fa)
{
    int pre_max = 0, pre_sum = 0; //前缀最大值,前缀和
    for(int v : g[u])
    {
        if(v == fa) continue;
        if(fa != -1) //一字型
        {
            ans_max = max(ans_max, w[v] * w[fa]);
            ans_sum = (ans_sum + w[v] * w[fa]) % mod;
        }
        //八字形
        ans_max = max(ans_max, w[v] * pre_max);
        ans_sum = (ans_sum + w[v] * pre_sum) % mod;
        //更新前缀最大值和前缀和
        pre_max = max(pre_max, w[v]);
        pre_sum = (pre_sum + w[v]) % mod;
        
        dfs(v, u);
    }
}
int main()
{
    int n;
    scanf("%d", &n);
    for(int i = 1; i < n; i ++) //n个点树有n-1条边
    {
        int u, v;
        scanf("%d%d", &u, &v);
        g[u].push_back(v), g[v].push_back(u); //无向图,双向建边
    }
    for(int i = 1; i <= n; i ++) scanf("%d", &w[i]);
    dfs(1, -1);
    printf("%d %d", ans_max, ans_sum * 2 % mod);
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云4核8G配置的服务器有哪些优惠?价格好不?

2024年腾讯云4核8G服务器租用优惠价格&#xff1a;轻量应用服务器4核8G12M带宽646元15个月&#xff0c;CVM云服务器S5实例优惠价格1437.24元买一年送3个月&#xff0c;腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云4核8G服务器优惠价格 轻…

echarts快速入门

文章目录 一、echarts下载1.1、下载说明1.2、使用说明 二、绘制一个简单图表 一、echarts下载 echarts是百度研发团队开发的一款报表视图JS插件&#xff0c;功能十分强大&#xff0c;可在echart官网下载源码&#xff08;一个echarts.min.js文件&#xff09;进行使用。 1.1、…

Nest安装及使用~

前提条件 请确保您的操作系统上安装了 Node.js&#xff08;版本 > 16&#xff09; &#x1f4da;要查看指南&#xff0c;请访问 https://docs.nestjs.com/ &#x1f4da;要查看中文 指南&#xff0c; 请访问 https://docs.nestjs.cn/ $ node -v v16.18.1 $ npm -v 7.x.x安…

AI技术在金融领域/银行业的应用和风险

前言 随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经在各行各业得到了广泛的应用&#xff0c;其中包括银行业。银行业作为经济的重要组成部分&#xff0c;一直在不断地探索和应用新技术&#xff0c;以提升服务效率、风险管理和客户体验。然而&…

【医学影像数据处理】nii 数据格式文件操作汇总

大部分医学领域数据存储的都是dicom格式&#xff0c;但是对于CT等一类的序号图像&#xff0c;就需要多个dicom文件独立存储&#xff0c;最终构成一个序列series&#xff0c;这样存储就太过于复杂了。 nifti&#xff08;Neuroimaging Informatics Technology Initiative&#x…

原理图设计的通用规范

原理图各页内容依次为&#xff1a;封面、目录、电源、时钟、CPU、存储器、逻辑、背板&#xff08;母板&#xff09;接口等。 原理图上所有的文字方向应该统一&#xff0c;文字的上方应该朝向原理图的上方&#xff08;正放文字&#xff09;或左方&#xff08;侧放文字&#xff…

Linux的Docker:解析容器化技术的革命

在当今科技领域&#xff0c;容器化技术的兴起被视为软件开发和部署的一场革命。而在这场革命中&#xff0c;Docker是无疑的领头羊。作为一种轻量级、可移植、自包含的软件容器解决方案&#xff0c;Docker已经深刻地改变了开发者们构建、交付和运行应用程序的方式。本文将深入探…

创建vue3项目及基本常用配置

1、创建vue3项目 1.1 创建vue3项目 确保电脑中安装了nodejs&#xff0c;新建文件夹&#xff0c;输入以下命令&#xff1a; npm create vuelatest 看是否为自己需要的vue版本&#xff0c;选择Y 各配置具体如下&#xff0c;根据自己的需求选择是或者否 npm create vuelatest …

内部类(来自类和对象的补充)

❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&a…

SON序列化解决方案

JSON&#xff08;JavaScript Object Notation&#xff09;是一种用于数据交换的轻量级数据格式。在我们日常Python编程中&#xff0c;通常可以使用内置的json模块来进行JSON序列化和反序列化。那么关于使用json模块进行JSON序列化和反序列化的问题解决方案&#xff0c;可以参考…

了解以太坊虚拟机(EVM)

了解以太坊虚拟机&#xff08;EVM&#xff09; 以太坊虚拟机&#xff08;Ethereum Virtual Machine&#xff0c;简称EVM&#xff09;是以太坊网络的核心组件之一&#xff0c;它承担着智能合约执行的重要任务 特点 智能合约执行环境&#xff1a;EVM提供了一个安全的环境&#xf…

mysql 运算符 语句 字符集 校队集

mysql 运算符 使用select语句可以输出运算的结果 mysql标识符不区分大小写 算数运算符 1./除法 得到的结果是一个小数 %是整数,省略小数 2、除以0不会报错,得到的结果是 null 3.数宇和字符串做加法运算,并不会拼接 比较运算符 1.mysql里面的=是比较运算符,而不是赋值运算…

电工技术学习笔记——直流电路及其分析方法

一、直流电路 电路的组成 1. 电压和电流的参考方向 电压&#xff08;Voltage&#xff09;&#xff1a;电压是电场力对电荷产生的作用&#xff0c;表示为电荷单位正电荷所具有的能量。在电路中&#xff0c;电压通常被定义为两点之间的电势差&#xff0c;具有方向性&#xff0c;…

(免费分享)基于springboot,vue房屋租赁管理系统

功能说明&#xff1a; * 普通用户角色&#xff1a; 1. 寻找房源功能--提供了两种寻找房源的功能&#xff0c;一种是普通用户在平台上搜索、筛选主动寻找房源的功能&#xff0c;另一种是用户填写征集房源的条件&#xff0c;系统会持续将最新符合条件的房源推送给用户。 2. …

【HBase】

什么是HBase HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据。 访问层次&#xff08;数据…

mac电脑安装redis教程

1、下载地址 Download | RedisRedisYou can download the last Redis source files here. For additional options, see the Redis downloads section below.Stable (7.2)Redis 7.2 …https://redis.io/download/#redis-downloads 2、安装 2.1 解压下载后的压缩文件 2.2 进入…

Redis数据库:持久化策略与性能管理

目录 前言 一、Redis持久化 1、Redis持久化功能 2、Redis持久化的两种方式 3、RDB持久化 3.1 触发条件 3.2 执行流程 3.3 启动时加载 4、AOF持久化 4.1 开启AOF 4.2 执行流程 4.2.1 执行流程详解 4.2.2 执行流程图 4.3 启动时加载 5、RDB与AOF持久化的优缺点 5…

【STM32】ST-LINK 下载时遇到的问题

如果出现“ST-Link USB communication error”ST-Link USB通信错误&#xff0c;则需要启动STM32 ST-LINK Utility&#xff0c;点击【ST-LINK】->【Firmaware】更新固件&#xff0c;然后打开Kei&#xff0c;点击魔术棒->->Debug->Settings&#xff0c;开到出现类似“…

2023年CSP-J第一轮题目讲解

大家好&#xff0c;我是极风。由于当年的初赛考的很差&#xff08;没考过70分&#xff09;&#xff0c;所以现在打算拿出来再细看一下。 一、 单项选择题&#xff08;共15题&#xff0c;每题2分&#xff0c;共计30分&#xff1a;每题有且仅有一个正确选项&#xff09; 1. 在…

2024.04.04 健身打卡第 45 天

别让别人告诉你&#xff0c;你成不了才&#xff0c;如果你有梦想的话就要去捍卫它&#xff0c;那些一事无成的人&#xff0c;想告诉你你也成不了大器&#xff0c;如果你有理想的话&#xff0c;就要去努力实现。 2024.04.04 健身打卡第 45 天