#CF2107F1. 骑行(简单版本)
骑行(简单版本)
每个测试时间限制:2 秒
每个测试内存限制:256 兆字节
题目说明
这是该问题的简单版本。两个版本的区别在于,在此版本中 ,并且你不需要为每个前缀输出答案。只有当你解决了该问题的所有版本时,才能进行 Hack。
Leo 在市中心做程序员,他的爱人在郊区的一所高中教书。每个周末,Leo 都会骑自行车去郊区与爱人共度美好周末。
此刻,Leo 前方的道路上共有 名骑行者在骑行。他们从前到后编号为 。初始时,Leo 位于第 名骑行者的后面。第 名骑行者有一个敏捷值 。
Leo 想要骑到第 名骑行者前面。Leo 可以无限次地执行以下操作:
- 假设 Leo 前方的第一个骑行者是 ,他可以花费 的成本骑到他前面。这会使他位于第 名骑行者之后(如果 ,则表示他已经位于第 名骑行者前面)。
- 使用他的超能力,花费 的成本交换 和 ()。
Leo 想知道骑到第 名骑行者前面的最小成本。这里你只需要输出针对完整数组 的答案。
输入格式
每个测试包含多个测试用例。
第一行包含一个整数 (),表示测试用例的数量。
接下来每个测试用例的格式如下:
- 第一行包含一个正整数 (),表示骑行者的数量。
- 第二行包含 个整数 ()。
数据保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数,表示 Leo 从第 名骑行者后面移动到第 名骑行者前面的最小成本。
示例
输入
4
3
1 2 4
4
1 1 1 1
2
1 2
4
4 1 3 2
输出
7
4
3
8
样例解释
第一个测试用例:
一种可能的移动方式如下:
- Leo 交换 ()和 (),数组变为 ,花费 。
- Leo 位于第 名骑行者后面,移动到第 名骑行者后面,花费 。
- Leo 交换 ()和 (),数组变为 ,花费 。
- Leo 位于第 名骑行者后面,移动到第 名骑行者后面,花费 。
- Leo 交换 ()和 (),数组变为 ,花费 。
- Leo 移动到第 名骑行者前面,花费 。
总成本为 。可以证明 是最小成本。
第二个测试用例:
为了从第 名骑行者后面移动到第 名骑行者前面,Leo 不应该交换任何人的敏捷值。总成本为 。