CF2133F.Flint and Steel

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

nn 只苦力怕站在你面前,第 ii 只苦力怕的爆炸力是 eie_i,当它爆炸的时候会同时杀死所有位于区间 (i−ei,i+ei)(i-e_i,i+e_i) 内的苦力怕。特殊的,当 ei=0e_i=0 的时候该苦力怕无法被引爆。

现在你要杀死所有的苦力怕,为此你可以进行若干次操作,每次操作选中一只活着的苦力怕并引爆它,求至少需要进行多少次操作才能完成目标。如果可以完成目标,你还需要给出一组合法的引爆顺序。

输入格式

多测,第一行输入 tt(1≤t≤1041\le t\le10^4)表示测试数据数量。

对于每组测试数据:

第一行输入一个正整数 nn(1≤n≤5×1051\le n\le5\times10^5)。

第二行输入 nn 个非负整数 e1,e2,…,ene_1,e_2,\dots,e_n(0≤ei≤n0\le e_i\le n)。

保证单测试点内所有 nn 的和不超过 5×1055\times10^5。

输出格式

对于每组测试数据,若无解输出 -1,否则先输出一行一个正整数表示最少操作次数 ss;接下来一行输出 ss 个正整数,按顺序依次表示一个能将所有苦力怕杀死的引爆顺序。如果有多组解,输出任意一种即可。

输入输出样例

  • 输入#1

    5
    6
    0 2 2 3 0 1
    4
    0 1 2 3
    4
    1 1 1 1
    5
    1 3 1 3 1
    9
    2 0 2 4 2 2 4 1 1

    输出#1

    2
    2 4
    -1
    4
    2 4 1 3
    2
    2 5
    3
    1 7 3

说明/提示

第一组测试数据中,可以按如下顺序引爆:

  • 0,2,2‾,3,0,1\underline{0, \mathbf{2}, 2}, 3, 0, 1
  • ×,×,×,3,0,1‾\times, \underline{\times, \times, \mathbf{3}, 0, 1}
  • ×,×,×,×,×,×\times, \times, \times, \times, \times, \times

×\times 表示被杀死的苦力怕,加粗的位置表示当前引爆的位置,下划线表示引爆范围。请注意如果先引爆第 44 只苦力怕,所有能爆炸的苦力怕都会被杀死,第一只苦力怕就无法被击败。

第二组测试数据中没有一只苦力怕能够杀死第一只。

第五组测试数据中,可以按如下顺序引爆:

  • 2,0‾,2,4,2,2,4,1,1\underline{\mathbf{2}, 0}, 2, 4, 2, 2, 4, 1, 1
  • ×,×,2,4,2,2,4,1,1‾\times, \times, 2, \underline{4, 2, 2, \mathbf{4}, 1, 1}
  • ×,×,2,×‾,×,×,×,×,×\times, \underline{\times, \mathbf{2}, \times}, \times, \times, \times, \times, \times
  • ×,×,×,×,×,×,×,×,×\times, \times, \times, \times, \times, \times, \times, \times, \times

输入解题思路,AI测评打分。不知道怎么写?

首页