#P1020. 商店(shop)
商店(shop)
【题目描述】
小 来到了一个商店,商店里有 个物品,每个物品的价值为一个 中的整数,且所有物品的价值互不相同;每个物品的价格将为一个 中的整数,保证对于所有 ,价值为 的物品的价格一定不高于价值为 的物品的价格。同时,商店里有 柜台,柜台从 到 编号,每一个柜台可恰好存放一个物品。
小 将会按照编号从小到大的顺序依次遍历柜台,如果当前柜台上存放的物品的价值大于其当前购买的所有物品的价值的最大值,则他将会购买这个物品;反之,他将不会购买这个物品。商店获得的收益将为小 购买的物品的价格之和。
获取这个消息的商店老板小 于是想到一个主意,可以通过调整不同价值的物品在柜台里的摆放顺序来使得商店的利润最大化。同时,为了不让小 看出来商店里商品的拜访有蹊跷,对于其中一些柜台,小 规定了其必须摆放价值为定值的物品。
更具体的,小 的约束将通过一个值域在 中,且长度为 的整数序列 给出。对于所有 ,若 ,则表示要求第 个柜台必须摆放价值为 的物品;若 ,则对第 个柜台摆放的物品价值没有限制。小 保证对于所有 ,若 ,则 ,因此不难证明总存在一个将 个物品放入 个柜台的方案,使得其满足其满足序列 给出的约束。
由于小 其实很忙,所以他并不一定会逛完所有柜台。因此小 想要知道,对于所有 ,如果小 只按照编号从小到大的顺序遍历了编号在 的柜台,那么在所有符合序列 的约束条件的物品摆放方案中,商店能够获得的最大收益是多少,他希望你能够告诉他这个问题的答案。
【输入格式】
从文件 shop.in 中读入数据。
输入的第一行包含两个非负整数 ,分别表示测试点编号与测试数据组数。特别的,样例的 表示该样例与编号为 的测试点的约束条件相同。
接下来依次输入每组测试数据,对于每组测试数据:
- 第一行包含一个正整数 ,表示物品数量;
- 第二行包含 个整数 ,表示小 给出的约束序列 ;
- 第三行包含 个正整数 ,其中第 个正整数 表示价值为 的物品的价格。
【输出格式】
输出到文件 shop.out 中。
对于每组测试数据,输出一行 个非负整数,其中第 个非负整数表示如果小 只按照编号从小到大的顺序遍历了编号在 的柜台,在所有符合序列 的约束条件的物品摆放方案中,商店能够获得的最大收益。
【样例输入1】
1 1
5
-1 -1 1 -1 -1
0 8 39 48 74
【样例输出1】
74 122 122 161 169
【样例解释1】
若小 仅遍历编号在 的柜台,则小 的其中一种最优摆放方案满足柜台编号从小到大所摆放的物品价值分别为 ,此时取到最大收益 。
若小 仅遍历编号在 的柜台,则小 的其中一种最优摆放方案满足柜台编号从小到大所摆放的物品价值分别为 ,此时取到最大收益 。
若小 仅遍历编号在 的柜台,则小 的其中一种最优摆放方案满足柜台编号从小到大所摆放的物品价值分别为 ,此时取到最大收益 。
若小 仅遍历编号在 的柜台,则小 的其中一种最优摆放方案满足柜台编号从小到大所摆放的物品价值分别为 ,此时取到最大收益 。
若小 仅遍历编号在 的柜台,则小 的其中一种最优摆放方案满足柜台编号从小到大所摆放的物品价值分别为 ,此时取到最大收益 。
【样例输入/输出2】
见选手目录下的 shop2.in/ans,该样例满足测试点 的限制。
【样例输入/输出3】
见选手目录下的 shop3.in/ans,该样例满足测试点 的限制。
【样例输入/输出4】
见选手目录下的 shop4.in/ans,该样例满足测试点 的限制。
【样例输入/输出5】
见选手目录下的 shop5.in/ans,该样例满足测试点 的限制。
【样例输入/输出6】
见选手目录下的 shop6.in/ans,该样例满足测试点 的限制。
【样例输入/输出7】
见选手目录下的 shop7.in/ans,该样例满足测试点 的限制。
【测试点约束】
对于所有测试数据,满足:
- ;
- ;
- 对于所有 ,满足 或 ;且对于所有 ,若 ,则满足 ;
- 对于所有 ,满足 ;且对于所有 ,满足 。
每个测试点的具体限制如下表:
| 测试点编号 | 特殊性质 | |
|---|---|---|
| 无 | ||
| A | ||
| B | ||
| C | ||
| 无 |
特殊性质 A:对于所有 ,满足 。
特殊性质 B:对于所有 ,满足 的位置不超过 个。
特殊性质 C:对于所有 ,满足 。
相关
在下列比赛中: