#P1492. Up and Down Sequences
Up and Down Sequences
题目描述
在某些计算(特别是模拟)中,使用的伪随机数生成器的质量是一个重要问题。提出的生成算法需要经过许多测试来评估其质量,或者更常见的是,评估其不足之处。其中一个常见的测试是游程检验。
在该测试中,序列会被检测其上升游程和下降游程。
我们将检查数据值序列中的上升游程和下降游程的数量及其长度。
- 上升游程:只要接收到的数据值不小于前一个数据值,游程就继续。当接收到的数据值小于前一个数据值时,该游程终止。
- 下降游程:只要接收到的数据值不大于前一个数据值,游程就继续。当接收到的数据值大于前一个数据值时,该游程终止。
一个上升游程可以由下降游程的终止而启动,反之亦然。(在这种情况下,新游程的初始长度为。)
如果数据值的初始变化是上升的,则所有初始数据值都属于上升游程,并计入其长度。
如果数据值的初始变化是下降的,则所有初始数据值都属于下降游程,并计入其长度。
如果数据值无法归类为上升游程或下降游程,则认为该数据既无上升游程也无下降游程。
对于数据文件中的每一行输入,计算其上升游程和下降游程的平均长度,并在处理每一行时输出这些平均值。
输入格式
每个待分析的序列占据一行输入。
每个序列包含至少个、至多个无符号非零整数。每个整数的位数在到位之间,整数之间用单个空格分隔。每个序列以单个数字作为结束符,该不视为序列的一部分。
所有序列的输入以单独一行的作为结束标志,该不视为序列,也不应产生任何输出。
输出格式
对于每个输入的序列,输出一行,包含两个实数:
- 首先输出消息
Nr values = N:
,其中是该行的输入数据个数(不包括终止符)。 - 然后输出上升游程的平均长度和下降游程的平均长度,用空格分隔。
所有数值需四舍五入到小数点后位。
输入样例
1 2 3 0
3 2 1 0
1 2 3 2 1 0
2 2 2 2 3 0
4 4 4 4 3 0
4 4 4 3 3 3 3 0
4 4 4 3 3 3 4 0
5 5 5 5 0
1 2 3 2 3 4 5 0
0
输出样例
Nr values = 3: 2.000000 0.000000
Nr values = 3: 0.000000 2.000000
Nr values = 5: 2.000000 2.000000
Nr values = 5: 4.000000 0.000000
Nr values = 5: 0.000000 4.000000
Nr values = 7: 0.000000 6.000000
Nr values = 7: 1.000000 5.000000
Nr values = 4: 0.000000 0.000000
Nr values = 7: 2.500000 1.000000
题目来源
年北美中东部地区竞赛