#CF1988E. Range Minimum Sum

Range Minimum Sum

CF1988E Range Minimum Sum

题目描述

对于一个长度为 nn 的数组 [a1,a2,,an][a_1,a_2,\ldots,a_n],定义 f(a)f(a) 为所有子区间的最小值之和。即,

$$f(a)=\sum_{l=1}^n\sum_{r=l}^n \min_{l\le i\le r}a_i。 $$

一个排列是长度为 nn 的整数序列,包含 11nn 的每个数字且每个数字恰好出现一次。给定一个排列 [a1,a2,,an][a_1,a_2,\ldots,a_n]。对于每个 ii,独立地解决以下问题:

  • aa 中删除 aia_i,将剩余部分拼接得到 b=[a1,a2,,ai1,ai+1,,an]b=[a_1,a_2,\ldots,a_{i-1},a_{i+1},\ldots,a_n]
  • 计算 f(b)f(b)

输入格式

每个测试点包含多组测试数据。第一行包含测试用例个数 tt1t1051 \le t \le 10^5)。
接下来每组测试数据描述如下:

第一行包含一个整数 nn1n51051\le n\le 5\cdot 10^5)。

第二行包含 nn 个互不相同的整数 a1,,ana_1,\ldots,a_n1ain1\le a_i\le n)。

保证所有测试用例中 nn 的总和不超过 10610^6

输出格式

对于每组测试数据,输出一行包含 nn 个整数,第 ii 个整数表示删除 aia_if(b)f(b) 的值。

输入输出样例 #1

输入 #1

4
1
1
3
3 1 2
5
4 2 1 5 3
8
8 1 4 6 7 3 5 2

输出 #1

0 
4 7 5 
19 21 27 17 19 
79 100 72 68 67 80 73 80

说明/提示

在第二个测试用例中,a=[3,1,2]a=[3,1,2]

  • 删除 a1a_1 后,b=[1,2]b=[1,2]f(b)=1+2+min{1,2}=4f(b)=1+2+\min\{1,2\}=4
  • 删除 a2a_2 后,b=[3,2]b=[3,2]f(b)=3+2+min{3,2}=7f(b)=3+2+\min\{3,2\}=7
  • 删除 a3a_3 后,b=[3,1]b=[3,1]f(b)=3+1+min{3,1}=5f(b)=3+1+\min\{3,1\}=5

由 ChatGPT 4.1 翻译