C. 3-1005 修复公路

    传统题 2000ms 512MiB

3-1005 修复公路

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

nn 座城市,依次坐落在一条直线上,相邻城市之间的距离为 11,且相邻城市之间原本有一条公路。现在,一场百年难遇的地震导致所有公路都被破坏了。

然而,每座城市都有一台空间传送机,可以从第 ii 座城市传送到距离为 aia_i 的另一座城市,或者从距离为 aia_i 的城市传送到第 ii 座城市(即从城市 ii 可以传送到城市 i+aii + a_iiaii - a_i,或者反向传送,如果目标城市存在的话)。

现在,政府需要开展援助工作,希望能尽快实现从任意城市到任意城市的连通性。为此,政府决定修复部分公路。问至少修复多少长度的公路,才能满足上述要求?


为了防止输入过大带来的常数问题,C++ 选手请尽量使用关闭流同步的 std::cinstd::cout 实现输入输出,否则可能出现因读入输出问题导致的 TLE 等。

int main(){
  std::ios::sync_with_stdio(0);
  std::cin.tie(0);

  // your code

  return 0;
}

输入格式

第一行一个整数 TT (1T1000)(1 \leq T \leq 1000),表示测试数据组数。

每组输入数据的第一行包含一个正整数 nn (1n3×105)(1 \leq n \leq 3 \times 10^5),表示城市数量。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n (1ain)(1 \leq a_i \leq n),表示每个城市的传送距离。

保证所有测试数据的 nn 之和不超过 10610^6

输出格式

对于每组数据,输出一行一个整数表示需要最小需要修复公路的长度。

样例

2
4
1 2 1 3 
5
5 5 5 5 5
0
4

限制

Time Limit: 2000ms Memory Limit: 524288KB

基础算法测试赛

未参加
状态
已结束
规则
IOI
题目
5
开始于
2025-8-1 9:00
结束于
2025-8-1 12:00
持续时间
3 小时
主持人
参赛人数
1