AT_ndpc2026_f 集合

题目描述

给定一个排列 $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$ 时的答案,用空格分隔。

说明/提示

## 样例解释 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$ - 所有输入均为整数 由 ChatGPT 5 翻译