首页 > 其他分享 >noip2014联合权值

noip2014联合权值

时间:2024-09-22 17:21:27浏览次数:3  
标签:f2 noip2014 20 int 权值 联合 ans

noip2014联合权值

题目描述

  无向连通图G有n个点,n-1条边。点从1到n依次编号,编号为i的点的权值为Wi ,每条边的长度均为1。图上两点(u, v)的距离定义为u点到v点的最短距离。对于图G上的点对(u, v),若它们的距离为2,则它们之间会产生Wu×Wv的联合权值。
  请问图G上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少?

输入格式

  第一行包含1个整数n。
  接下来n-1行,每行包含2个用空格隔开的正整数u、v,表示编号为u和编号为v的点之间有边相连。
  最后1行,包含n个正整数,每两个正整数之间用一个空格隔开,其中第i个整数表示图G上编号为i的点的权值为Wi。

输出格式

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

样例输入1

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

样例输出1

20 74

注释说明

样例解释


本例输入的图如上所示,距离为 2 的有序点对有(1,3) 、(2,4) 、(3,1) 、(3,5)、(4,2) 、(5,3)。
其联合权值分别为 2,15,2,20,15,20。其中最大的是 20,总和为 74。

数据规模
对于30%的数据,1<n≤100;
对于60%的数据,1<n≤2000;
对于100%的数据,1<n≤200,000,0<Wi ≤10,000。

题目来源

noip2014提高组day1第2题

#include <bits/stdc++.h>
using namespace std;
long long ans2;
int n,w[200001],k,ans,n1,n2,p=10007;
vector<int>e[200002];
void dfs(int x,int fa,int g){
	int f1=0,f2=0;
	long sq=0,sum=0;
	for(int i=0;i<e[x].size();i++){
		int yy=e[x][i],y=w[yy];
		if(yy==fa)continue;
		sq=(sq+y*y)%p;
		sum+=y;
		if(y>f1)f2=f1,f1=y;
		else if(y>f2)f2=y; 
		dfs(yy,x,fa);
	}
	ans=max(ans,f1*f2);
	ans=max(ans,w[g]*w[x]);
	sum%=p;
	ans2=(ans2+(sum*sum)%p-sq+2*(w[g]*w[x])%p)%p;

}
int main(){
	scanf("%d",&n);
	for(int i=1;i<n;i++){
		int u,v;
		scanf("%d%d",&u,&v);
		e[u].push_back(v);
		e[v].push_back(u);	
	}
	for(int i=1;i<=n;i++){
		scanf("%d",&w[i]);
	}
	dfs(1,0,0);
	printf("%d %d\n",ans,ans2);
}

标签:f2,noip2014,20,int,权值,联合,ans
From: https://blog.csdn.net/no_play_no_games/article/details/142440150

相关文章

  • 【题解】【枚举】—— [NOIP2014 普及组] 比例简化
    【题解】【枚举】——[NOIP2014普及组]比例简化[NOIP2014普及组]比例简化题目背景题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.思路解析2.AC代码[NOIP2014普及组]比例简化通往洛谷的传送门题目背景NOIP2014普及组T2题目描述在社交媒体......
  • 自定义类型:联合和枚举
    一.联合体类型的声明像结构体一样,联合体也是有一个或者多个成员构成,这些成员可以是不同的类型。但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。给联合体其中一个成员赋值,其他成员的值也跟着变化。#include......
  • 【C语言】⾃定义类型:联合和枚举
    ⾃定义类型:联合和枚举1.联合体1.1联合体类型的声明1.2联合体的特点1.3相同成员的结构体和联合体对⽐1.4联合体⼤⼩的计算1.5联合的⼀个练习2.枚举类型2.1枚举类型的声明2.2枚举类型的优点2.3枚举类型的使⽤1.联合体1.1联合体类型的声明像结构体⼀样,联......
  • 自定义类型:联合和枚举
    一,联合体类型的声明 与结构体相似,联合体也是由一个或者多个成员构成,这些成员可以是不同类型。但是与结构体不同的是:编译器只为联合体成员中的最大成员分配足够的内存空间。 联合体的特点是所有成员共用一块内存空间。所以联合体也称 ===>  共用体那也就意味着联......
  • 【C语言】联合体&&枚举的讲解
    目录✨声明!!!:联合体与结构体只有一个区别,那就是内存存储方式不同......
  • 【任务分配】CBBA算法多无人机协同计算和资源分配联合优化策略研究【含Matlab源码 493
    ......
  • 2024Mysql And Redis基础与进阶操作系列(6)作者——LJS[含MySQL 多表之一对一/多;多对多;
    MySQL多表操作1多表关系简介1.1一对一关系比如1.2一对多/多对一关系比如:实现规则:1.3多对多关系举例:规则:2.多表联合查询简介多表查询有以下分类知识补充——笛卡尔积(了解即可)交叉连接查询[产生笛卡尔积]内连接查询(使用的关键字innerjoin--inner可以省......
  • 传音控股与联发科技携手共建人工智能联合实验室,加速推进端侧AI技术创新
    9月13日,传音控股与联发科技携手共建的人工智能联合实验室在深圳正式揭牌。双方将整合人工智能领域的优势技术资源,加速推进AI技术在智能终端的应用和普及,为全球用户打造更智能便捷的移动体验。传音控股高级副总裁张祺、TEXAI中心总经理史团委,联发科技计算与人工智能技术事......
  • C和指针:结构体(struct)和联合(union)
    结构体和联合结构体结构体包含一些数据成员,每个成员可能具有不同的类型。数组的元素长度相同,可以通过下标访问(转换为指针)。但是结构体的成员可能长度不同,所以不能用下标来访问它们。成员有自己的名字,可以通过名字访问成员。结构声明在声明结构时,必须列出它包含的所有成员。struct......
  • 自定义类型:联合和枚举
    目录引言一.联合体1.1联合体的定义1.2联合体的声明 1.3 联合体的特点1.4相同成员的结构体和联合体对比1.5联合体大小的计算1.6联合体的作用1.7联合体的小练习二.枚举类型 2.1枚举的定义2.2枚举的声明2.3枚举的作用2.4枚举的使用示例 后记引言......