启动按键消抖
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
按键在按下和松开时可能产生短暂抖动。程序每隔固定时间读取一次按键电平,需要确认电平连续稳定后再改变按键状态。
题目描述
按键原始电平为 0(松开)或 1(按下)。按键的确认状态初始为 0。依次处理每个采样值,规则如下:
- 若采样值与当前确认状态相同,将“连续相反次数”清零。
- 若采样值与当前确认状态相反,将“连续相反次数”加一。当它达到阈值 k 时,确认状态立即切换为该采样值,并将计数清零。
- 每次确认状态从 0 切换为 1 时,记为一次有效按下,记录当前采样位置。确认状态从 1 切换为 0 时不记录。
采样位置从 1 开始编号。请输出全部有效按下的位置。
输入格式
第一行包含两个整数 n、k,分别表示采样次数和确认状态切换所需的连续采样次数。
第二行包含 n 个整数,每个整数为 0 或 1,表示依次读取的原始电平。
输出格式
第一行输出有效按下的次数。
第二行按时间顺序输出各次有效按下的采样位置,位置之间用一个空格分隔。若没有有效按下,第二行输出空行。
样例
19 3
1 0 1 1 1 1 0 1 0 0 0 1 1 0 1 1 1 0 0
2
5 17
样例解释
第 3 至 5 次采样连续为 1,故在位置 5 确认第一次按下。第 9 至 11 次采样连续为 0,确认松开。第 15 至 17 次采样连续为 1,在位置 17 确认第二次按下。其余短暂的电平变化均不足 k 次。
数据范围
1 ≤ n ≤ 100000,1 ≤ k ≤ n。时间限制:1 秒;内存限制:256 MiB。
ASC2026考核C语言训练题二(AC这10道提前知道51考核任务)
- 状态
- 已结束
- 规则
- ACM/ICPC
- 题目
- 10
- 开始于
- 2026-10-1 0:00
- 结束于
- 2026-10-6 0:00
- 持续时间
- 120 小时
- 主持人
- 参赛人数
- 121