CF2107F2.Cycling (Hard Version)
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是此问题的困难版本,和其他版本的区别是此版本中 1≤n≤106,且需要对每个前缀都求解。
Leo 骑车去见他的女朋友。在 Leo 的前面有 n 名骑手,从前往后排在第 i 名的骑手的灵活度为 ai。
Leo 将要加速超过前面的所有骑手,他可以执行以下两种操作:
- 当他在骑手 i 后面,骑手 i+1 前面(或 i=n)时,付出 ai 的代价超过骑手 i,之后他将在骑手 i 前面,骑手 i−1 后面(如果 i>1);
- 使用他的超级力量交换 ai 和 aj,代价为 ∣i−j∣。
请你找出超过所有 n 名骑手的最小代价。
额外地,Leo 想知道对于每个 i(1≤i≤n),当只有骑手 1,2,⋯,i 存在时,他超过所有 i 名骑手的最小代价。
输入格式
多组数据,第一行一个整数 t(1≤t≤104),表示数据组数。
对于每组数据,第一行一个整数 n(1≤n≤106)。
第二行 n 个整数 a1,a2,⋯,an(1≤ai≤109)。
保证单个测试点中 ∑n≤106。
输出格式
对于每组数据,输出一行 n 个整数,第 i 个数表示只存在前 i 个骑手时的答案。
输入输出样例
输入#1
4 3 1 2 4 4 1 1 1 1 2 1 2 4 4 1 3 2
输出#1
1 3 7 1 2 3 4 1 3 4 3 6 8
说明/提示
样例解释
第一组数据中,当存在所有 n 名骑手时,一组操作如下所示:
- 交换 a2 和 a3,之后 a=(1,4,2),代价为 1;
- 超过第 3 名骑手,代价为 2;
- 交换 a1 和 a2,a=(4,1,2),代价为 1;
- 超过第 2 名骑手,代价为 1;
- 交换 a1 和 a2,a=(1,4,2),代价为 1;
- 超过第 1 名骑手,代价为 1。
总代价为 7。可以证明这是最小的代价。
第二组数据中,当存在所有 n 名骑手时,如果一直执行“超过”操作,花费为 4。可以证明这是最小的代价。
By chenxi2009
输入解题思路,AI测评打分。不知道怎么写?