开始: 2026-09-30 00:00:00

【集训】专题

结束: 2026-10-03 00:00:00
当前  2026-11-04 13:29:46  类型: IOI  状态: 已经结束 

P6. 集合代价
描述

给定一个排列 P = (P_1, P_2, \dots, P_N)(是 (1, 2, \dots, N) 的一个排列),以及一个长度为 N 的整数数组 A_1, A_2, \dots, A_N。

一个集合 S(S 是 \lbrace 1,2,\dots,N \rbrace 的一个子集)被称为**好集合**,如果满足如下条件:

- 对于任意整数对 (x, y),满足 x < y 且 x, y \in S,有:

    - 设 z 使得 P_z = \min(P_x, P_{x+1}, \dots, P_y)。(这样的 z 唯一确定。)则必须有 z \in S。


一个好集合 S 的**代价**定义为 \displaystyle \sum_{i \in S} A_i。

对于每个 K = 1, 2, \dots, N,求所有大小为 K 的好集合的最小代价。

给定 T 组测试数据。请分别求解每一组。


输入

输入由标准输入给出,格式如下:


> T  

> \mathrm{case}_1  

> \mathrm{case}_2  

> \vdots  

> \mathrm{case}_T


每组测试数据包含:


> N  

> P_1 \ P_2 \ \dots \ P_N  

> A_1 \ A_2 \ \dots \ A_N


输出

输出共 T 行。第 i 行为第 i 组测试数据的答案。  

对于每组测试数据,按顺序输出 K=1,2,\dots,N 时的答案,用空格分隔。


样例

输入

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 6 11 15
27 57 95 140 213 298
207907746 493431232 833061816 1192122901 1537883577 1896944662 2584619964 3365015576 4209049096 5062871597
提示

样例解释 1

对于第一组测试数据:

- 当 K=1 时,最优选 S=\lbrace 1 \rbrace;

- 当 K=2 时,最优选 S=\lbrace 3,4 \rbrace;

- 当 K=3 时,最优选 S=\lbrace 1,2,3 \rbrace;

- 当 K=4 时,最优选 S=\lbrace 1,2,3,4 \rbrace。

 数据范围

- 1 \leq T \leq 5000

- 1 \leq N \leq 5000

- 1 \leq A_i \leq 10^9

- (P_1, P_2, \dots, P_N) 是 (1,2,\dots,N) 的排列

- 所有测试数据中 N 的总和不超过 5000

- 所有输入均为整数


提交

题目参数
时间限制 2 秒
内存限制 512 MB
提交