题目背景
原题链接:https://oier.team/problems/X1C。
题目描述
给出一个长度为 n 的序列 a。定义其前缀和数组 bi=∑j=1iaj。定义其权值 S=∑i=1n(bimod2)。
你可以对序列 a 进行若干次如下操作:
- 交换 ai,aj,花费 ci+cj 元,其中 c 为给定序列;
对于 i=0∼n,求使得 S=i 的最少钱数。如果不可能,输出 −1。
输入格式
本题包含多组测试数据。
第一行一个正整数 T,表示测试数据组数。
对于每组测试数据:
第一行一个正整数 n,表示序列长度。
第二行 n 个正整数,表示序列 a。
第三行 n 个正整数,表示序列 c。
输出格式
对于每组测试数据:
一行,n+1 个整数,第 i 个表示 S=i−1 的最少钱数。如果不可能,输出 −1。
3
3
1 2 3
1 1 1
5
1 2 3 4 5
2 5 3 6 4
10
1 8 3 5 2 6 3 4 6 2
3 2 7 1 8 2 5 8 3 1
-1 2 0 -1
-1 -1 7 0 9 -1
-1 -1 5 3 4 0 7 8 6 -1 -1
提示
【样例解释】
对于第一组数据,初始 ∑i=1n(bimod2)=2,故使 S=2 最少要花 0 元。
交换 a1,a2 即可使 ∑i=1n(bimod2)=1,故使 S=1 可以花费 2 元。可以证明这是最优解。
可以证明不存在交换方案使得 S=0 或 S=3。
【数据范围】
本题采用捆绑测试。
| 子任务编号 | 分值 | n≤ | ∑n≤ | 特殊性质 | 
| 1 | 10 | 5 | 50 | 无 | 
| 2 | 500 | a 中至多有 3 个奇数 | 
| 3 | 15 | 30 | 150 | 无 | 
| 4 | 25 | 100 | 500 | 
| 5 | 10 | 500 | ci=1 | 
| 6 | 30 | 无 | 
对于 100% 的数据:1≤n,∑n≤500,1≤ai≤109,1≤ci≤106,1≤T≤500。