#P7390. 「EZEC-6」造树

    ID: 6156 远端评测题 2000ms 256MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>贪心2021O2优化排序构造双指针,尺取法,two-pointer

「EZEC-6」造树

题目背景

成体系的结论会产出“低猜想水平”的机械推导,但更多的题目中需要“高猜想水平”的灵感。

——command_block 《考前小贴士》

无脑选手出思维题。

题目描述

你要帮 djy 造一棵树,满足以下条件:

  • nn 个点组成。

  • ii 号点的度数为 aia_i

定义一条边 (i,j)(i,j) 的价值为 bi×bjb_i\times b_j,你要在满足上述两个条件下,使所有边的价值和最大。

保证存在这样的树。

输入格式

第一行一个整数 typetype,表示数据生成方式。

type=0type=0

第二行一个整数 nn

第三行 nn 个整数,第 ii 个数表示 aia_i

第四行 nn 个整数,第 ii 个数表示 bib_i

type=1type=1

给出一个数据生成器模板:

int a[10000005],b[10000005];
unsigned seed;
unsigned rnd(unsigned x){
	x^=x<<13;
	x^=x>>17;
	x^=x<<5;
	return x;
}
int rad(int x,int y){
	seed=rnd(seed);
	return seed%(y-x+1)+x;
}
void init_data(){
	cin>>seed;
	for(int i=1;i<=n;i++)
		a[i]=1,b[i]=rad(1,500000);
	for(int i=1;i<=n-2;i++)
		a[rad(1,n)]++;
}

第二行一个整数 nn

之后调用 init_data()

第三行一个整数 seedseed

输出格式

一行一个整数 ansans,表示最大的价值和。

0
5
1 2 3 1 1 
5 3 1 7 9
42
1
10
114514
249899101316

提示

本题采用捆绑测试。

  • Subtask0 (10 pts):n6n\le 6type=0type=0
  • Subtask1 (20 pts):n103n\le 10^3type=0type=0
  • Subtask2 (10 pts):n5×105n\le5\times10^5bi2b_i\le2type=0type=0
  • Subtask3 (20 pts):n105n\le10^5type=0type=0
  • Subtask4 (20 pts):n5×105n\le5\times10^5type=0type=0
  • Subtask5 (20 pts):type=1type=1

对于 100%100\% 的数据,2n1072\le n\le10^71ain1\le a_i\le n1bi5×1051\le b_i\le5\times10^5type{0,1}type\in\{0,1\}0seed<2310\le seed<2^{31}