#P1124. 乘积
乘积
题目描述
高端的题目,只需要朴素的题目名称。
定义一个个数字的序列具有的权值是:
- 当序列的长度时,序列的权值为零。
- 当序列的长度时,首先将序列进行排序,之后得到一个不降序的序列,记作,则序列的权值为:。即排序后相邻两项乘积的加和。
现在,给你一个初始长度为的数组。你可以从中选择一个允许不连续的子序列(可以为空),显然任意一种选法都可以得到一个子序列的权值。其中两个选取方案是不同的,当且仅当两个子序列选取方案中至少存在一个位置在其中一个方案中出现而另一个没有。
假定所有子序列选取方案概率等同,你的任务是求出任意选取子序列时的权值期望。请将该期望对取模。
本题还没完。现在另外还会给出次修改。每次修改,会改变位置上的数值,变成。你需要在每次修改后求出修改后的数组任意选取子序列时的权值期望。同样对取模。
输入格式
第一行一个整数,表示初始的数组长度为。
接下来一行个正整数,表示初始时数组上的值。
接下来一行一个整数q,表示接下来会有次修改。
接下来行,每行两个空格隔开的整数,表示将下标处的数字修改为。
输出格式
第一行输出初始时权值期望取模后的结果。
接下来行,每行一个整数,表示修改后的数组权值期望取模后的结果。
2
1 2
2
1 2
2 1
500000004
1
500000004
样例解释
初始时能选出的子序列有:{}, {1}, {2}, {1, 2},本例中因为只有两个数字,所以选出的子序列也是连续的,但这不代表不可以选不连续的子序列,请注意。
其权值期望为,在模下表示为500000004。
第一次修改后,数组变成[2, 2],可以选出子序列{}, {2}, {2}, {2, 2},其期望为(0+0+0+4)/4=1。
第二次修改后,数组变成[2, 1],可以选出子序列{}, {2}, {1}, {2, 1},其期望为(0+0+0+2)/4=1/2,在模下表示为500000004。
数据规模与约定
对于的数据,;
对于另外的数据,,且初始的所有仅有一个位置上的值与其他不同;
对于另外的数据,;
对于另外的数据,;