CF1525D.Armchairs

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

There are nn armchairs, numbered from 11 to nn from left to right. Some armchairs are occupied by people (at most one person per armchair), others are not. The number of occupied armchairs is not greater than n2\frac{n}{2}.

For some reason, you would like to tell people to move from their armchairs to some other ones. If the ii-th armchair is occupied by someone and the jj-th armchair is not, you can tell the person sitting in the ii-th armchair to move to the jj-th armchair. The time it takes a person to move from the ii-th armchair to the jj-th one is ∣i−j∣|i - j| minutes. You may perform this operation any number of times, but these operations must be done sequentially, i. e. you cannot tell a person to move until the person you asked to move in the last operation has finished moving to their destination armchair.

You want to achieve the following situation: every seat that was initially occupied must be free. What is the minimum time you need to do it?

有 nn 张扶手椅,从左到右依次编号为 11 到 nn。其中一些扶手椅上坐着人(每张椅子上至多坐一人),其余为空。初始时被占据的扶手椅数量不超过 n2\frac{n}{2}。

出于某种原因,你希望让人们从当前所坐的扶手椅移动到其他扶手椅上。若第 ii 张扶手椅上有人,而第 jj 张扶手椅为空,则你可以让坐在第 ii 张扶手椅上的人移动到第 jj 张扶手椅上。此人从第 ii 张扶手椅移动到第 jj 张扶手椅所需时间为 ∣i−j∣|i - j| 分钟。你可以执行该操作任意多次,但这些操作必须顺序进行,即:在上一次操作中被要求移动的人尚未到达目标扶手椅之前,你不能发出下一次移动指令。

你的目标是达成如下状态:所有最初被占据的扶手椅最终都必须为空。实现该目标所需的最短总时间是多少?

输入格式

The first line contains one integer nn (2≤n≤50002 \le n \le 5000) — the number of armchairs.

The second line contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (0≤ai≤10 \le a_i \le 1). ai=1a_i = 1 means that the ii-th armchair is initially occupied, ai=0a_i = 0 means that it is initially free. The number of occupied armchairs is at most n2\frac{n}{2}.

第一行包含一个整数 nn(2≤n≤50002 \le n \le 5000)—— 表示扶手椅的数量。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(0≤ai≤10 \le a_i \le 1)。若 ai=1a_i = 1,表示第 ii 个扶手椅初始时被占用;若 ai=0a_i = 0,表示它初始时为空闲。被占用的扶手椅数量至多为 n2\frac{n}{2}。

输出格式

Print one integer — the minimum number of minutes you have to spend to achieve the following situation: every seat that was initially occupied must be free.

输出一个整数——为达成以下情形所需的最少分钟数:所有最初被占用的座位都必须变为空闲。

输入输出样例

  • 输入#1

    7
    1 0 0 1 0 0 1

    输出#1

    3
  • 输入#2

    6
    1 1 1 0 0 0

    输出#2

    9
  • 输入#3

    5
    0 0 0 0 0

    输出#3

    0

说明/提示

In the first test, you can perform the following sequence:

  1. ask a person to move from armchair 11 to armchair 22, it takes 11 minute;
  2. ask a person to move from armchair 77 to armchair 66, it takes 11 minute;
  3. ask a person to move from armchair 44 to armchair 55, it takes 11 minute.

In the second test, you can perform the following sequence:

  1. ask a person to move from armchair 11 to armchair 44, it takes 33 minutes;
  2. ask a person to move from armchair 22 to armchair 66, it takes 44 minutes;
  3. ask a person to move from armchair 44 to armchair 55, it takes 11 minute;
  4. ask a person to move from armchair 33 to armchair 44, it takes 11 minute.

In the third test, no seat is occupied so your goal is achieved instantly.

在第一次测试中,你可以执行以下操作序列:

  1. 让一个人从扶手椅 11 移动到扶手椅 22,耗时 11 分钟;
  2. 让一个人从扶手椅 77 移动到扶手椅 66,耗时 11 分钟;
  3. 让一个人从扶手椅 44 移动到扶手椅 55,耗时 11 分钟。

在第二次测试中,你可以执行以下操作序列:

  1. 让一个人从扶手椅 11 移动到扶手椅 44,耗时 33 分钟;
  2. 让一个人从扶手椅 22 移动到扶手椅 66,耗时 44 分钟;
  3. 让一个人从扶手椅 44 移动到扶手椅 55,耗时 11 分钟;
  4. 让一个人从扶手椅 33 移动到扶手椅 44,耗时 11 分钟。

在第三次测试中,没有扶手椅被占用,因此你的目标立即达成。

输入解题思路,AI测评打分。不知道怎么写?

首页