#1001. F - 集合(Set)

F - 集合(Set)

题目描述

给定一个 11NN 的排列 P=(P1,P2,,PN)P=(P_1,P_2,\ldots,P_N),以及一个长度为 NN 的正整数序列 A=(A1,A2,,AN)A=(A_1,A_2,\ldots,A_N)

对于集合 S{1,2,,N}S\subseteq\{1,2,\ldots,N\},若它满足以下条件,则称 SS好集合

  • 对任意满足 x<yx<yx,ySx,y\in S 的整数 x,yx,y,令 zz 为区间 Px,Px+1,,PyP_x,P_{x+1},\ldots,P_y 中最小值所在的唯一位置,即Pz=min(Px,Px+1,,Py),P_z=\min(P_x,P_{x+1},\ldots,P_y), 则必须有 zSz\in S

定义集合 SS 的代价为

iSAi.\sum_{i\in S}A_i.

对于每个 K=1,2,,NK=1,2,\ldots,N,求大小恰好为 KK 的好集合的最小代价。

共有 TT 组测试数据,请分别求解。

限制条件

  • 1T50001\le T\le 5000
  • 1N50001\le N\le 5000
  • 1Ai1091\le A_i\le 10^9
  • PP11NN 的排列。
  • 所有测试数据中 NN 的总和不超过 50005000
  • 所有输入均为整数。

输入

T
case_1
case_2
...
case_T

每组测试数据的格式如下:

N
P_1 P_2 ... P_N
A_1 A_2 ... A_N

输出

对每组测试数据输出一行,共 NN 个整数。第 KK 个整数表示大小恰好为 KK 的好集合的最小代价。

样例输入 1

3
4
4 1 2 3
1 8 2 4
6
5 3 2 4 6 1
73 38 30 85 27 45
10
4 10 3 7 2 6 8 9 5 1
853822501 687675302 281611653 844033520 423210108 339630584 780395612 207907746 285523486 359061085

样例输出 1

1 6 11 15
27 57 95 140 213 298
207907746 493431232 833061816 1192122901 1537883577 1896944662 2584619964 3365015576 4209049096 5062871597

对于第一组测试数据:

  • K=1K=1 时,可以取 S={1}S=\{1\}
  • K=2K=2 时,可以取 S={3,4}S=\{3,4\}
  • K=3K=3 时,可以取 S={1,2,3}S=\{1,2,3\}
  • K=4K=4 时,只能取全部位置。