#ABC150E. 稍作修改

稍作修改

稍作修改

题目描述

对于由 0,10, 1 组成的长为 NN 的两个不同数列 S,TS, T,定义函数 f(S,T)f(S, T) 如下:

  • 考虑对 SS 重复执行以下操作使其与 TT 相同。此时操作成本之和的最小可能值即为 f(S,T)f(S, T)

操作:将 SiS_i 改为(从 00 变为 11,或从 11 变为 00)。设操作前满足 SjTj(1jN)S_j \neq T_j (1 \leq j \leq N) 的整数 jj 的个数为 DD,则此操作的成本为 D×CiD \times C_i

0,10, 1 组成的长为 NN 的两个不同数列的组 (S,T)(S, T) 共有 2N×(2N1)2^N \times (2^N - 1) 种。请计算所有这些组对应的 f(S,T)f(S, T) 之和除以 109+710^9+7 的余数。

输入格式

输入按以下格式从标准输入给出:

NN
C1C_1 C2C_2 \cdots CNC_N

输出格式

输出 f(S,T)f(S, T) 之和除以 109+710^9+7 的余数。

样例

1
1000000000
999999993

0,10, 1 组成的长为 11 的两个不同数列的组 (S,T)(S, T) 有以下 22 种:

  • S=(0),T=(1):S = (0), T = (1):S1S_1 改为 11,可以用成本 10000000001000000000 使 S=TS = T,因此 f(S,T)=1000000000f(S, T) = 1000000000
  • S=(1),T=(0):S = (1), T = (0):S1S_1 改为 00,可以用成本 10000000001000000000 使 S=TS = T,因此 f(S,T)=1000000000f(S, T) = 1000000000

这些之和为 20000000002000000000,除以 109+710^9+7 的余数为 999999993999999993

2
5 8
124

0,10, 1 组成的长为 22 的两个不同数列的组 (S,T)(S, T) 共有 1212 种,例如有以下情况:

  • S=(0,1),T=(1,0)S = (0, 1), T = (1, 0)

此时,如果第 11 次操作将 S1S_1 改为 11,第 22 次操作将 S2S_2 改为 00,则操作成本之和为 5×2+8=185 \times 2 + 8 = 18。不存在成本更小的方案能使 S=TS = T,因此 f(S,T)=18f(S, T) = 18

5
52 67 72 25 79
269312

数据范围

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1Ci1091 \leq C_i \leq 10^9
  • 输入均为整数
难度 提高
通过率
尝试 0
已通过 0
ID
1846
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签