出逃事件
时间限制:1秒 内存限制:256M
【问题描述】
最近小H的宠物猫们出逃现象越发猖狂!
为统计相关信息,他在猫屋的墙上挂了一个计数器,用以记录自最近发生出逃事件后经过的天数。所以如果某一天发生了出逃事件,这一天的计数器就为 0;如果最近的出逃是 3 天前发生的,则计数器读数就为 3。小H一丝不苟地记录了每一天计数器的读数。
年末到了,小H准备做一些统计,然而意想不到的是,他的记录的一些条目竟然被破坏了!但小H确信他是在发生了出逃事件的某一天开始记录的。请帮助他确定,在所有与残留记录条目一致的事件序列中,基于记录的时间,最少和最多可能发生了多少次出逃事件。
【输入格式】
输入文件的第一行是一个正整数 \(T\),表示有 \(T\) 组数据。对于每组数据,第 1 行包含一个整数 \(n\),表示从小H开始记录计数器数据的天数。第 2 行包含 \(n\) 个空格分隔的整数,若第 \(i\) 个整数是 −1,表示第 \(i\) 天的记录丢失了,若是一个非负整数 \(a_i\)(不超过 \(10^5\)),表示在第 \(i\) 天计数器的数字是 \(a_i\)。
注意:记录中的第一天一定发生了出逃事件,但残留的记录中也许是 -1。
【输出格式】
如果没有事件序列与小H的残留记录以及他所确定的小猫在第 1 天清晨出逃这一事实不一致,输出一个整数 −1。否则,输出两个空格分隔的整数 \(m\) 和 \(M\),其中 \(m\) 为所有事件序列中出逃的最少次数,\(M\) 为最多次数。
【输入输出样例】
Input
3
4
-1 -1 -1 1
10
0 -1 -1 3 0 -1 2 -1 -1 0
8
0 -1 -1 -1 2 -1 3 -1
Output
2 3
3 5
-1
【输入输出样例说明】
样例中第一组数据,已经知道在第1天也发生了出逃,也可以根据第4天的记录推断第3天必然有出逃发生。所以不确定的只有第2天是否发生了出逃,所以记录可能是:0 1 0 1 或 0 0 0 1。因此,总共发生了至少2次,至多3次出逃事件。
【数据限制】
\(1 ≤ n ≤ 10^5\),\(1 ≤ T ≤ 10\)
【来源】
Mr.he
信息
- ID
- 1012
- 难度
- 2
- 分类
- (无)
- 标签
- 递交数
- 1
- 已通过
- 1
- 通过率
- 100%
- 被复制
- 5
- 上传者