CF1525D Armchairs
题目描述
有 $n$ 把扶手椅,从左到右编号为 $1$ 到 $n$。有些扶手椅上坐着人(每把椅子最多坐一个人),其余的椅子是空的。被占用的扶手椅数量不超过 $\frac{n}{2}$。
出于某种原因,你希望让所有人从他们当前的扶手椅移动到其它空的扶手椅上。如果第 $i$ 把扶手椅上有人,而第 $j$ 把扶手椅是空的,你可以让坐在第 $i$ 把椅子上的人移动到第 $j$ 把椅子上。一个人从第 $i$ 把椅子移动到第 $j$ 把椅子需要 $|i-j|$ 分钟。你可以进行任意多次这样的操作,但这些操作必须依次进行,也就是说,在上一次操作的人还没有移动到目标椅子之前,不能让下一个人开始移动。
你的目标是:让所有最初被占用的椅子都变为空椅。你需要的最少时间是多少?
输入格式
第一行包含一个整数 $n$($2 \le n \le 5000$),表示扶手椅的数量。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le 1$)。$a_i = 1$ 表示第 $i$ 把扶手椅最初被占用,$a_i = 0$ 表示最初为空。被占用的扶手椅数量不超过 $\frac{n}{2}$。
输出格式
输出一个整数,表示让所有最初被占用的椅子都变为空椅所需的最少分钟数。
说明/提示
在第一个样例中,你可以按如下顺序操作:
1. 让第 $1$ 把椅子上的人移动到第 $2$ 把椅子上,耗时 $1$ 分钟;
2. 让第 $7$ 把椅子上的人移动到第 $6$ 把椅子上,耗时 $1$ 分钟;
3. 让第 $4$ 把椅子上的人移动到第 $5$ 把椅子上,耗时 $1$ 分钟。
在第二个样例中,你可以按如下顺序操作:
1. 让第 $1$ 把椅子上的人移动到第 $4$ 把椅子上,耗时 $3$ 分钟;
2. 让第 $2$ 把椅子上的人移动到第 $6$ 把椅子上,耗时 $4$ 分钟;
3. 让第 $4$ 把椅子上的人移动到第 $5$ 把椅子上,耗时 $1$ 分钟;
4. 让第 $3$ 把椅子上的人移动到第 $4$ 把椅子上,耗时 $1$ 分钟。
在第三个样例中,没有椅子被占用,因此目标已经达成,所需时间为 $0$。
由 ChatGPT 4.1 翻译