#P7390. 「EZEC-6」造树
「EZEC-6」造树
题目背景
成体系的结论会产出“低猜想水平”的机械推导,但更多的题目中需要“高猜想水平”的灵感。
——command_block 《考前小贴士》
题目描述
你要帮 djy 造一棵树,满足以下条件:
-
由 个点组成。
-
号点的度数为 。
定义一条边 的价值为 ,你要在满足上述两个条件下,使所有边的价值和最大。
保证存在这样的树。
输入格式
第一行一个整数 ,表示数据生成方式。
若 :
第二行一个整数 。
第三行 个整数,第 个数表示 。
第四行 个整数,第 个数表示 。
若 :
给出一个数据生成器模板:
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)]++;
}
第二行一个整数 。
之后调用 init_data()
。
第三行一个整数 。
输出格式
一行一个整数 ,表示最大的价值和。
0
5
1 2 3 1 1
5 3 1 7 9
42
1
10
114514
249899101316
提示
本题采用捆绑测试。
- Subtask0 (10 pts):,;
- Subtask1 (20 pts):,;
- Subtask2 (10 pts):,,;
- Subtask3 (20 pts):,;
- Subtask4 (20 pts):,;
- Subtask5 (20 pts):。
对于 的数据,,,,,。