首页 > 试题广场 >

树与序列问题

[编程题]树与序列问题
  • 热度指数:1688 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一棵树,树的点编号为1到n,以1为根,树的边有边权,定义s(x,y)=x到y路径上边权的最小值。
现需要构造一个1到n的排列p[],使得最大,输出这个最大值即可。
示例1

输入

3,6,7,5

输出

77
示例2

输入

4,3,9,6

输出

297

备注:
树的边集不会直接给出,但会给出随机种子和构造方式,输入数据包含题干中的n和三个随机种子seed1,seed2,seed3.
构造方式如下
////////////////////////////
定义数组u[],v[],w[]                         //u[i],v[i]分别表示第i条边的两个端点,w[i]表示第i条边的边权。
定义变量seed4.
定义循环变量 i 从1到n-1
循环体开始
        seed4=((seed1+seed2)%998244353)*seed3%998244353;
        u[i]=i+1;
        v[i]=(seed4%i)+1;
        w[i]=seed2*seed3%12131415;
        seed3=seed2;
        seed2=seed1;
        seed1=seed4;
循环体结束
//////////////////////////////////////////////////////
输出一个整数,表示答案。
保证构造出的数据合法。
n<=200000,seed1,seed2,seed3<=1e10
头像 大叔带你看金鱼儿
发表于 2022-01-27 14:37:31
#define ll long long class Solution { public: long long work(int n, long long seed1, long long seed2, long long seed3) { vector<int> u(n);// 展开全文
头像 AimerAimer
发表于 2021-10-13 19:26:48
题意:         给定一棵树,树的点编号为1到n,以1为根,树的边有边权,定义s(x,y)=x到y路径上边权的最小值。 现需要构造一个1到n的排列p[ ],使得最大, 输出这个最大值即可。 展开全文
头像 摸鱼学大师
发表于 2021-08-31 20:24:27
思路: 题目的主要信息: 一棵树编号1到n,其中1为根,树的每条边有权值 ,其中为x节点到y节点经过的边的权值 构造一个排列p,使得最大,且输出这个最大值 树的边集不会直接给出,但会给出随机种子和构造方式,输入数据包含题干中的n和三个随机种子seed1,seed2,seed3. 构造方式如下 / 展开全文

问题信息

难度:
4条回答 9322浏览

热门推荐

通过挑战的用户

查看代码
树与序列问题