【题目】http://codeforces.com/problemset/problem/886/C
【题意】一个人走迷宫,他如果到了一个新的房间,那么他会随意记录一个比当前时间小的数,如果他到了一个曾经去过的房间,那么他会记录上次来这个房间的时间。现在给出他的笔记,问最少有多少个房间?
【代码】
#include<bits/stdc++.h>
using namespace std;
const int M=2e5+100;
int book[M]= {0};//记录有这样一个在i时间走过的房间
int w[M];//存这个人的笔记
int main()
{
int n;
cin>>n;
int nowt=0;//当前时间
int num=1;//共有几个房间
for(int i=0; i<n; i++)
{
cin>>w[i];
}
book[0]=1;//在0时刻到达过某个房间
for(int i=0; i<n; i++)
{
nowt++;//过去1时间
if(book[w[i]]==1)//如果有一个在w[i]时间走到的房间
{
book[w[i]]=0;//去掉这个w[i]时间到达的房间
book[nowt]=1;//新增一个nowt时间到达的房间
}
else//那么这个人一定是到了一个新的房间
{
num++;
book[nowt]=1;//新增一个nowt时间到达的房间
}
}
cout<<num;
}