传统题 1000ms 256MiB

PID 控制量计算

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

PID是非常常见的控制方法,通过目标与实际的偏差计算控制量。此题中,控制器每个周期执行一次简化的离散 PID 计算。

初始累计偏差 sum = 0,上一周期偏差 last = 0。每个周期严格按以下顺序处理:

  1. 计算当前偏差:error = target - actual。
  2. 更新累计偏差:sum = sum + error,并将其限制在 [-sumLimit, sumLimit] 内。
  3. 计算原始控制量:
output = Kp * error + Ki * sum + Kd * (error - last)
  1. 将控制量限制在 [-outLimit, outLimit] 内,输出。
  2. 更新 last = error。

将一个数限制在 [L, R] 内,指小于 L 时取 L,大于 R 时取 R,否则保持原值。

本题所有计算均使用整数,不涉及采样时间系数。输出限幅不再影响累计偏差。

输入格式

第一行输入六个整数 n Kp Ki Kd sumLimit outLimit。

接下来 n 行,每行输入两个整数 target actual。

输出格式

输出 n 行,每行一个整数,表示该周期的最终控制量。

样例

4 2 1 1 5 10
10 7
10 9
10 12
10 6
10
4
-5
10

样例说明

四个周期的偏差为 3、1、-2、4,限幅后的累计偏差为 3、4、2、5。

原始控制量分别为 12、4、-5、19,再进行输出限幅。

数据范围与限制

  • 1 <= n <= 10000;
  • 0 <= Kp, Ki, Kd <= 100;
  • 1 <= sumLimit, outLimit <= 1000000;
  • -10000 <= target, actual <= 10000;
  • 时间限制:1 秒;
  • 空间限制:64 MiB。

ASC2026考核C语言训练题二(AC这10道提前知道51考核任务)

未参加
状态
已结束
规则
ACM/ICPC
题目
10
开始于
2026-10-1 0:00
结束于
2026-10-6 0:00
持续时间
120 小时
主持人
参赛人数
121