#AEAI01008. 距离读数两阶段清洗
距离读数两阶段清洗
题目描述
距离传感器的时间序列里可能混有缺失值、量程外读数和突发离群点。自动化科协具身智能部希望保留可靠读数的原始时间编号,方便回看对应时刻的机器人状态。
请对原始距离读数执行一次两阶段清洗:先删除缺失值和量程外读数,再用第一阶段保留值计算均值、总体标准差,并按 Z-score 阈值筛除离群点。输出最终保留读数的数量和原始 1-based 编号。
输入格式
- 第一行包含整数 n。
- 第二行包含三个浮点数 L、U、K。
- 若 n > 0,第三行包含 n 个原始距离读数,其中 -1 表示缺失值。
输出格式
- 第一行输出保留读数数量 m。
- 若 m > 0,第二行按原始时间顺序输出保留读数的 1-based 原始编号。
- 若 m = 0,只输出第一行 0;不输出均值或读数值。
数据范围与约束
0 <= n <= 1000000 <= L < UK >= 0
判定规则
使用标准输出比较。两阶段清洗只执行一次,细节按下列规则处理。
- 第一阶段删除读数等于 -1、小于 L 或大于 U 的观测。
- 第二阶段只用第一阶段保留值计算均值和总体标准差。
- std <= 1e-12 时保留第一阶段全部读数;否则保留 Z-score <= K 的读数。
- 本题只执行一次两阶段清洗,不迭代重算。
样例
输入样例 1
6
0 10 1.0
1 2 100 -1 3 4
输出样例 1
2
2 5
输入样例 2
4
0 10 2.0
5 5 5 5
输出样例 2
4
1 2 3 4
样例解释
样例覆盖缺失值、量程越界、标准差为 0、Z-score 等于阈值和 m=0。