按照题意暴力模拟即可,维护每一辆小车在第 i 秒的位置,然后使用一个 set 去记录当前所有小车在的位置,则第 i 秒对应的空余位置数则为 n−st.size()
#include<bits/stdc++.h>
using namespace std;
const int N=1E5+10;
int n,a[N],w[N],vis[N];
有一个停车场,包含一排 n 个车位,从左到右依次编号为 1 到 n。初始时刻(第 0 秒),每个车位上都停着一辆小车。每辆车有一个固定的移动方向,用一个数组 d 表示:若 di=0,则该车每次向左移动一个车位;若 di=1,则向右移动一个车位。每过一秒,所有仍在停车场内的车辆都会同时按其方向移动一个车位。如果一辆车在 1 号车位向左移动,或是在 n 号车位向右移动,它就会驶出停车场,此后不再占据车位。请你计算从第 1 秒到第 n 秒,每一秒停车场内有多少个车位是空的。
数据范围:车位数量 n 满足 1≤n≤3×103。所有的方向值 di 均为 0 或 1。
第一行包含一个整数 n,表示车位的数量(1≤n≤3×103)。 第二行包含 n 个整数 d1,d2,…,dn,每个整数为 0 或 1(0 表示向左,1 表示向右)。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册