19082 中位特征值

2024-06-09 20:36
文章标签 特征值 中位 19082

本文主要是介绍19082 中位特征值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【2022】贝壳找房秋招测试开发工程师笔试卷2
给你一棵以T为根,有n个节点的树。(n为奇数)每个点有一个价值V,并且每个点有一个特征值P。 每个点的特征值P为:以这个点为根的子树的所有点(包括根)的价值的和。 现在牛牛想知道这n个点对应的特征值的中位数是多少,你能告诉牛牛吗?
 

输入格式

第一行两个正整数,分别代表T和n。n<=1e5
接下来一行共n个正整数,分别代表编号为i的点的价值V[i]。V[i]<=1e9
接下来n-1行,每行两个正整数u,v,代表u和v之间有一条边相连。

输出格式

输出一行,共一个正整数,代表n个点特征值的中位数是多少。

输入样例

2 5
1 10 100 1000 10000
1 2
3 2
3 4
5 3

输出样例

10000

提示

根据题意,2是树根,可以先画出这棵树理解题意。点1对应的特征值为1,点2对应的特征值为11111,
点3对应的特征值为11100,点4对应的特征值为1000,点5对应的特征值为10000,中位数是10000。
提示,数据范围为1e9,那么求和计算很可能超过int范围,因此数据定义时要使用long long 类型。

题目分析:树要用图的存储方法,当然对于图结构来说并无“根”这个概念,所以任何一点都可以是树根,此题目指定某点T为根。存储时注意,需要用无向图的方式存储,因为数据并没明确指出“边”的两个点那个点是父节点。

一个树的权值和为所有结点权值和,这类用递归算法很容易实现(图的深度优先搜索算法)。

此处给出了两种递归算法中避免重复访问的方式,一种是用图算法中的标志数组V,另一种是树结构的专用写法,参数中传递父节点信息,这样递归时不会回溯,也能避免重复访问。

(1)用标志数组V避免重复访问
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n,m,v[100005],a[100005];
long long ans[100005];
vector<int> e[100005];
long long dfs(int cur)
{v[cur]=1;ans[cur]=a[cur];for(int i=0;i<e[cur].size();i++){ int y=e[cur][i];if(v[y]==0)/**< cur..i有边,且y没有访问过 */ans[cur]+=dfs(y);}return ans[cur] ;
}
int main()
{ios::sync_with_stdio(false);int i,j,T,x,y;cin>>T>>n;for(i=1;i<=n;i++)cin>>a[i];for(i=1;i<=n-1;i++){cin>>x>>y;e[x].push_back(y);e[y].push_back(x);}dfs(T);sort(ans+1,ans+n+1);cout<<ans[n/2+1];return 0;
}

(2)

(2)不用v数组的写法,递归时记录父节点
#include <bits/stdc++.h>//ASI
typedef long long ll;
using namespace std;
int T,n,v[500005];
ll ans[500005];
vector<int>e[500005];
ll dfs(int cur,int f)
{/**< 一个基础的深搜,搜索过程中去累加子树的和 */ans[cur]=v[cur];for(int i=0;i<e[cur].size();i++)if(e[cur][i]!=f) //父节点不递归ans[cur]+=dfs(e[cur][i],cur);return ans[cur];
}
int main()
{ios::sync_with_stdio(0),cin.tie(0);int i,j,x,y;cin>>T>>n;for(i=1;i<=n;i++)cin>>v[i];for(i=1;i<n;i++){/**< 虽然是树结构,但无法确认x和y谁是父节点,一般来说树的题目都用图结构存储 */cin>>x>>y;e[x].push_back(y);e[y].push_back(x);}dfs(T,0);sort(ans+1,ans+n+1);cout<<ans[n/2+1];/**< 题目告知n是奇数 */return 0;
}

这篇关于19082 中位特征值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046236

相关文章

特征值分解(EVD)和奇异值分解(SVD)—应用于图片压缩

特征值分解(EVD)和奇异值分解(SVD)—应用于图片压缩 目录 前言 一、特征值分解 二、应用特征值分解对图片进行压缩 三、矩阵的奇异值分解 四、应用奇异值分解对图片进行压缩 五、MATLAB仿真代码 前言         学习了特征值分解和奇异值分解相关知识,发现其可以用于图片压缩,但网上没有找到相应代码,本文在学习了之后编写出了图片压缩的代码,发现奇异值分

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相似对角化5.2 已知两个矩阵相似,求某个矩阵中的未知参数5.3 相似时,求可逆矩阵P,使

奇异值与特征值基础

一、奇异值与特征值基础知识:     特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。先谈谈特征值分解吧:    1)特征值:     如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式:     这时候λ就被称为特征向量v对应的特征值,一个

MATLAB eig 函数简介:计算特征值和特征向量

在数据科学、工程学和数学中,特征值和特征向量是理解和分析矩阵行为的核心概念。MATLAB 的 eig 函数是处理这些概念的强大工具。本文将介绍 eig 函数的基本用法,并通过示例展示如何使用它来计算特征值和特征向量。 什么是特征值和特征向量? 在矩阵分析中,特征值和特征向量帮助我们理解一个矩阵的性质。例如,在物理学中,它们可以用来描述系统的稳定性;在机器学习中,它们被用于数据降维和特征提取。

矩阵的特征值和特征向量的雅克比算法C/C++实现

矩阵的特征值和特征向量是线性代数以及矩阵论中非常重要的一个概念。在遥感领域也是经常用到,比如多光谱以及高光谱图像的主成分分析要求解波段间协方差矩阵或者相关系数矩阵的特征值和特征向量。 根据普通线性代数中的概念,特征值和特征向量可以用传统的方法求得,但是实际项目中一般都是用数值分析的方法来计算,这里介绍一下雅可比迭代法求解特征值和特征向量。 雅克比方法用于求实对称阵的全部特征值、特征向量。 对

眼底视网膜血管增强方法(五)Hessian矩阵最大特征值

眼底视网膜血管增强方法(五)Hessian矩阵最大特征值 说明 在上一篇文章中讲到,Hessian矩阵的特征值能够很好地描述眼底图像的血管信息。眼底的血管部分是一个管状的结构,高斯二阶导的响应值比较大;眼底的背景是均匀部分,高斯二阶导的响应值比较小。因此,血管点处的Hessian矩阵特征值一大一小,血管交叉点处Hessian矩阵特征值两个都很大,背景点处Hessian矩阵的特征值两个都很小。f

特征值分解(EVD)和奇异值分解(SVD)

两篇博文,写得很好: http://blog.sina.com.cn/s/blog_3f738ee00102val0.html http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html

java中位运算在算法中的应用

1.概念 ​ 在Java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。 ​ 这些运算符当中,仅有~是单目运算符,其他运算符均为双目运算符。 ​ 对数值类型数据进行按位操作;1表示true、0表示false。​ 按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值。​ 位

android中位图Bitmap工具类的实现

android中位图工具类的实现: package com.demo.utils;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import j

特征值和特征向量的几何意义、计算及其性质

http://www.cnblogs.com/chaosimple/p/3179695.html 一、特征值和特征向量的几何意义 特征值和特征向量确实有很明确的几何意义,矩阵(既然讨论特征向量的问题,当然是方阵,这里不讨论广义特征向量的概念,就是一般的特征向量)乘以一个向量的结果仍是同维数的一个向量。因此,矩阵乘法对应了一个变换,把一个向量变成同维数的另一个向量。 那么变换的效果是