按照题意暴力模拟即可,维护每一个史莱姆在第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];
int main(){
地图上有n个格子排成一排,最左边的格子为1,最右边的格子为n。第0秒时,每个格子都有一只史菜姆。
第i只史莱姆的跳跃方向用数组a表示。ai=0表示史莱姆跳跃的方向是往左。若第i秒史莱姆位于格子x,那么第i+1秒史莱姆会跳到格子x−1。如果当前史莱姆在格子1,则下一秒史莱姆将跳出地图。 ai=1表示史莱姆跳跃的方向是往右。若第i秒史莱姆位于格子x,那么第i+1秒史莱姆会跳到格子x+1。如果当前史莱姆在格子n,则下一秒史莱姆将跳出地图。
米小游想知道第1~n秒,地图上有多少个格子没有史菜姆
第一行包含一个整数n(1≤n≤3×103),表示地图上的格子数量。
第二行包含n个整数 ai(0≤a≤1),表示每只史莱姆的跳跃方向。
输出1~n秒格子上没有史莱姆的数量
输入
3
1 0 1
输出
1 2 3
说明
史莱姆1~3的跳跃方向分别为,往右,往左,往右。
第1秒,史莱姆1跳到格子 2,史菜姆2跳到格子1,史菜姆3跳出地图,格子3没有史莱姆。
第2秒,史莱姆1跳到格子3,史莱姆2跳出地图,格子1 2 没有史莱姆。
第3秒,史莱姆1跳出地图,格子1,2,3 没有史莱姆。